2017-01-25 1 views
0

У меня есть простые элементы флажка, и когда элементы выбраны, он отлично работает. Я положил button в unselectвсе выбранные товары. В режиме отладки я вижу, что выбранное состояние установлено на unchecked (false), хотя оно не отражено в пользовательском интерфейсе. Вот код:Настройка флажка выделены в False в пользовательском интерфейсе - C# WPF

XAML для Listbox-Checkbox:

<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 для кнопки UncheckALL: за

<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 
      } 

код позади для Unchec Кнопка калл:

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

Убедитесь, что класс, где определен Проверил свойство реализует интерфейс INotifyPropertyChanged и поднимает 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)); 
    } 
} 

Тогда вы должны быть в состоянии просто установить Проверено свойство всех этих объектов на false для обновления CheckBox:

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

Он очищает наблюдаемую коллекцию, но не обновляет пользовательский интерфейс. Я попробовал то же самое раньше. – user7157732

+0

Вы используете UpdateSourceTrigger = "PropertyChanged"? –