我有一个ListCOllectionView,它绑定到一个列表框。当我点击它,我可以选择一个项目。现在,我希望能够转到列表框中的前一项和下一项,并同时选择它。
我的列表箱
<ListBox x:Name="Imported_images" SelectedItem="{Binding SelectedImage}" ItemsSource="{Binding SortedImageLibrary}"/>
<Button x:Name="next" Command="{Binding NextImageCommand}" >
<Button x:Name="previous" Command="{Binding PreviousImageCommand}">ViewModel
private ListCollectionView _sortedImageLibrary;
public ListCollectionView SortedImageLibrary
{
get
{
if (_sortedImageLibrary == null)
{
_sortedImageLibrary = new ListCollectionView(ImageLibrary);
_sortedImageLibrary.IsLiveSorting = true;
_sortedImageLibrary.CustomSort = new ImageComparer();
}
return _sortedImageLibrary;
}
set
{
_sortedImageLibrary = value; RaisePropertyChanged();
}
}
private Image _selectedImage;
public Image SelectedImage
{
get { return _selectedImage; }
set { _selectedImage = value; RaisePropertyChanged("SelectedImage"); }
}
public RelayCommand NextImageCommand { get; set; }
public RelayCommand PreviousImageCommand { get; set; }
public void PreviousImageExecute()
{
if (SortedImageLibrary.CurrentPosition == 0)
{
}
else
{
SortedImageLibrary.MoveCurrentToPrevious();
}
}
public void NextImageExecute()
{
if (SortedImageLibrary.CurrentPosition == SortedImageLibrary.Count - 1)
{
}
else
{
SortedImageLibrary.MoveCurrentToNext();
}
}我可以转到ListCollectionView中的下一项和前一项,但是SelectedImage不更新。当我在ListCollectionView中导航时,如何更新选定的图像?
发布于 2015-10-30 08:46:37
我认为您只需要在导航上设置SelectedImage属性的实例。PropertyChangedEvent应该在WPF端触发更新。
我不确定,但我想应该像这样:
public void PreviousImageExecute()
{
if (SortedImageLibrary.CurrentPosition == 0)
{
}
else
{
SortedImageLibrary.MoveCurrentToPrevious();
}
SelectedImage = SortedImageLibrary.CurrentItem as Image;
}
public void NextImageExecute()
{
if (SortedImageLibrary.CurrentPosition == SortedImageLibrary.Count - 1)
{
}
else
{
SortedImageLibrary.MoveCurrentToNext();
}
SelectedImage = SortedImageLibrary.CurrentItem as Image;
}发布于 2015-10-30 08:49:19
导航之后,应该将CurrentItem分配给SelectedImage属性。当然,您需要评估您的导航方法是否在分配之前返回true。
https://stackoverflow.com/questions/33431423
复制相似问题