如何在列表框中捕获复选框的已选中和未选中事件
本文关键字:事件 复选框 列表 | 更新日期: 2024-09-22 02:52:02
我在mvvm应用程序的视图中有以下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");
}
}
我看到的第一个问题是我的ischecked活动从未被解雇。
我有下面的财产附在上面。
private bool _IsSelected;
public bool IsSelected
{
get { return _IsSelected; }
set { _IsSelected = value; RaisePropertyChanged("IsSelected"); }
}
在选中和未选中事件之后,如何在列表框或集合中获取"选中"answers"未选中"项目的详细信息?
如果您希望UI更新您的后台属性,则需要在IsSelected属性上使用TwoWay模式。对于列表框选定的项,我将在绑定到数据上下文中DataSource属性的列表框选定项上使用TwoWay绑定属性。
编辑 我现在看到了问题,点击事件被复选框吃掉,并且没有冒泡到列表框的选定事件。我想出的解决办法是将选中的事件添加到复选框中,并将所选项目设置为:
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
((AppViewModel)this.Resources["AppViewModel"]).SelectedDataSource = ((FrameworkElement)sender).DataContext as DataSource;
}