2013-12-12 93 views
0

我有下面的UI(XAML)在我的MVVM應用程序的視圖:如何捕獲列表框中複選框的選中和未選中事件。

<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

請註明究竟是如何'IsChecked'事件不解僱? 'DataSource'中的對應屬性是否改變? – Nogard

+0

請問您可以告訴C#代碼片段屬於哪些類?我假設第一個是你的視圖模型類的一部分(它可能綁定到你的視圖的'DataContext')。第二個片段是你的'DataSource'類的一部分? – venerik

回答

0

如果您希望UI更新您的支持屬性,則需要在IsSelected屬性上使用TwoWay模式。對於列表框選定的項目,我將使用列表框上的TwoWay綁定屬性 - 選定的項目綁定到數據上下文中的DataSource屬性。

編輯 我現在看到的問題,點擊事件得到通過複選框吃掉,不冒泡到列表框中的選擇的事件。周圍的工作,我想出了被加入檢查事件的複選框,設置像這樣選擇的項目:

private void CheckBox_Click(object sender, RoutedEventArgs e) 
    { 
     ((AppViewModel)this.Resources["AppViewModel"]).SelectedDataSource = ((FrameworkElement)sender).DataContext as DataSource; 
    } 
+0

我在viewmodel中對isselected屬性使用了雙向模式,但仍然沒有得到event.when用戶選中複選框時,我想捕獲該項目的詳細信息。selecteditem事件正常工作,但它不會在該複選框被選中或未選中。 – krrishna

+0

您是否嘗試使用複選框的實際選中事件?如果是這樣,您可以發佈相關代碼,以瞭解如何在xaml和viewmodel中設置選中的事件。 –

相關問題