我看了几个解决方案,但对我来说还没有任何效果。
我正在为这个项目使用MVVM,并且有一个ListView,我无法设置SelectedItem属性。
如果这是我的(简化)XAML。
<ListView Name="uxPackageGroups" ItemsSource="{Binding Path=PackageGroups, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" BorderThickness="0"
BorderBrush="#FF0000E8" ScrollViewer.CanContentScroll="True"
SelectedItem="{Binding Path=PackageGroupSelectedItem, Mode=TwoWay}" >
<ListView.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Name}" Height="20" Margin="0" Padding="0"/>
</DataTemplate>
</ListView.ItemTemplate>
我将它绑定到ViewModel中的PackageGroups
public PackageGroup PackageGroupSelectedItem {get; set; }
public ObservableCollection<PackageGroup> PackageGroups {get; set; }
private void LoadUI()
{
PackageGroups = Factory.LoadAllPackageGroups())
// if I try to hard-code a pre-selected item here it doesn't work.
// 34 is a valid ID and I see a valid object when stepping through the code
PackageGroupSelectedItem = PackageGroup.LoadByID(db, 34);
}
我的代码中有什么明显的东西?
感谢。
答案 0 :(得分:1)
一个可能的问题是您没有在PackageGroupSelectedItem属性中实现INotifyPropertyChanged。
答案 1 :(得分:0)
我刚刚遇到同样的情况,结果发现我的收藏项目错误地实施了“等于”方法。它不需要在集合项上实现INotifyPropertyChanged,但是Equals应该正确实现...