我在mvvm app的视图中有以下ui(xaml):
<ListBox ItemsSource="{Binding SavedDataSource}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel >
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected,Mode=TwoWay}"/>
<TextBlock Text="{Binding DataSourceCreatedTime}"/>
</StackPanel >
</DataTemplate>
</ListBox.ItemTemplate>
我将以下来源绑定到上述视图
private ObservableCollection<DataSource> _SavedDataSource = new ObservableCollection<DataSource>();
public ObservableCollection<DataSource> SavedDataSource
{
get
{
ObservableCollection<DataSource> savedDataSource = new ObservableCollection<DataSource>();
savedDataSource = DataSource.GetSaved();
return savedDataSource;
}
set
{
this._SavedDataSource = value;
RaisePropertyChanged("SavedDataSource");
}
}
我看到的第一个问题是我的缺血事件从未被解雇过。
我有以下属性。
private bool _IsSelected;
public bool IsSelected
{
get { return _IsSelected; }
set { _IsSelected = value; RaisePropertyChanged("IsSelected"); }
}
在选中和未选中的事件后,如何在列表框或集合中获取已选中和未选中的项目详细信息?
答案 0 :(得分:0)
如果希望UI更新后备属性,则需要在IsSelected属性上使用TwoWay模式。对于列表框选择项,我将在列表框中使用TwoWay绑定属性 - 选定项绑定到数据上下文中的DataSource属性。
修改强> 的 我现在看到了问题,点击事件被复选框吃掉而没有冒泡到列表框的选定事件。我想出的工作是在复选框中添加一个选中的事件并设置所选的项目,如下所示:
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
((AppViewModel)this.Resources["AppViewModel"]).SelectedDataSource = ((FrameworkElement)sender).DataContext as DataSource;
}