如何捕获列表框中复选框的已检查和未检查事件。

时间:2013-12-12 15:06:15

标签: c# windows-phone-7 mvvm windows-phone-8

我在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"); }
    }

在选中和未选中的事件后,如何在列表框或集合中获取已选中和未选中的项目详细信息?

1 个答案:

答案 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;
    }