2017-01-25 5 views
0

私は単純なチェックボックスアイテムを持っています。アイテムが選択されていればうまく動作します。 buttonを選択してください。すべて選択された商品です。デバッグモードでは、チェックされた状態がUIに反映されていないにもかかわらず、チェックされていない状態(false)に設定されていることがわかります。ここでは、コードです:リストボックス、チェックボックスのためのユーザーインターフェイスで選択したチェックボックスをFalseに設定する - C#WPF

XAML:UncheckALLボタンの

<ListBox x:Name="Listitems" Grid.Column="0" SelectionMode="Multiple" ItemsSource="{Binding MonthlyResults}" > 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <CheckBox Content="{Binding logdate}" IsChecked="{Binding Checked ,Mode=TwoWay}" Click="CheckBox_Click"/> 
     </DataTemplate> 
     </ListBox.ItemTemplate> 
     </ListBox> 

XAML:背後

<Button Grid.Row="0" Name="ClearALL" Margin="4,10,4,75" Content="Unselect All" FontFamily="Tahoma" FontSize="12" Click="Button_Click"/> 

コード:

private void CheckBox_Click(object sender, RoutedEventArgs e) 
      { 
       var cb = sender as CheckBox; 
       var item = cb.DataContext; 
       Listitems.SelectedItem = item; 
       HornerPlotPluginModel model = DataContext as HornerPlotPluginModel; 
       var checkedItems1 = model.MonthlyResults.Where(B => B.Checked == true); 
//monthlyresults is the observable collection that populates the checkbox items 
       model.CDFResults.Clear(); // some function 
       Chart1.Series.Clear();  
       Chart1.Axes.Clear(); 
       model.DisplayLogs(); // some function 
       DrawCurves();   // some function 
      } 

背後にあるコードアンチェクカルボタン:

private void Button_Click(object sender, RoutedEventArgs e) 
     { 
      HornerPlotPluginModel model = DataContext as HornerPlotPluginModel; 
      var checkedItems1 = model.MonthlyResults.Where(B => B.Checked == true); 
      Listitems.SelectedItems.Clear(); //SET CHECKED ITEMS TO FALSE!!! 
      model.CDFResults.Clear(); 
      Chart1.Series.Clear(); 

     } 

私はここで同様のポストを見てみました:WPF UserControl property change not updating が、それは私の頭の上に行ってきました!

答えて

1

Checkedプロパティが定義されているクラスがINotifyPropertyChangedインタフェースを実装し、CheckedプロパティのセッターでPropertyChangedイベントを発生させていることを確認してください:

public class MonthlyReport : INotifyPropertyChanged 
{ 
    private bool _checked; 

    public bool Checked 
    { 
     get { return _checked; } 
     set { _checked = value; NotifyPropertyChanged(); } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 

その後、あなたは、単に設定することができるはずチェックボックスを更新するために、これらのオブジェクトのCheckedプロパティをfalseに設定します。

0
HornerPlotPluginModel model = DataContext as HornerPlotPluginModel; 
foreach(var item in model.MonthlyResults) 
{ 
    item.Checked = false; 
} 
+0

観察可能なコレクションはクリアされますが、UIは更新されません。私は前に同じことを試みた。 – user7157732

+0

UpdateSourceTrigger = "PropertyChanged"を使用していますか? –

関連する問題