我正在开发 WPF 应用程序并关注 MVVM。在我看来,有一个包含不同列的网格视图。其中一列是 ListBox。现在的问题是,对于 ListBox 列, SelectedItem 可以正常工作,但 set 不能。
这是我的查看代码
<DataGrid ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="Name" />
<DataGridTemplateColumn Header="Actions">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ListBox DisplayMemberPath="Name" ItemsSource="{Binding Actions}" SelectedItem="{Binding SelectedAction}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
在我的 ViewModel 中,我有 Main ViewModel 类,其中包含一个项目列表。项目类包含名称、动作列表和选定动作。
public class MyViewModel : INotifyOfPropertyChanged
{
private ObservableCollection<Item> _items;
public ObservableCollection<Item> Items
{
get { return _items?? (_items= new ObservableCollection<Item>); }
}
private Item _selectedItem;
public Item SelectedItem
{
get { return _selectedItem; }
set { _selectedItem= value; }
}
}
public class Item : INotifyOfPropertyChanged
{
public string Name;
private ObservableCollection<string> _actions;
public ObservableCollection<string> Actions
{
get { return _actions?? (_actions= new ObservableCollection<string>); }
}
private string _selectedAction;
public string SelectedAction
{
get { return _selectedAction; }
set { _selectedAction = value; }
}
}
现在,Items 列表的 SelectedItem 工作正常。但是 Actions 的 SelectedItem insde Item 类不能完全工作。我在 SelectedAction 的 getter 和 setter 上插入了断点。获得断点命中。但是,如果我从 UI 中选择一个操作,则不会为 SelectedAction 设置断点。
有什么问题。
当我选择存档项目或恢复项目时,不会调用 SelectedAction 的设置器。
注意:我已经删除了不必要的信息,例如在列表中加载数据、INotifyOfPropertyChanged 的实现等。