根据 WPF 中的组合框选择动态更新复选框状态

问题描述 投票:0回答:1

假设我有一个最小的WPF应用程序如下:

我的代码由以下类组成:

  • MainWindow
    ,包含以下属性的视图:
    • List<string> Choices
    • string Choice
    • List<CheckedListItem> Checkboxes
  • MainWindowViewModel
    ,ViewModel
  • CheckedListItem
    ,复选框项的表示,由以下属性组成:
    • string Name
    • bool IsChecked

XAML 如下所示:

<StackPanel Width="100">
   <ComboBox ItemsSource="{Binding Choices }" SelectedItem="{Binding Choice}" ></ComboBox>
   <ListBox ItemsSource="{Binding Checkboxes}">
      <ListBox.ItemTemplate>
         <DataTemplate>
            <CheckBox Content="{Binding Name}" IsChecked="{Binding IsChecked, Mode=TwoWay}"/>
         </DataTemplate>
      </ListBox.ItemTemplate>
   </ListBox>
</StackPanel>

组合框中可能有以下值:

  • 选择1
  • 选择2
  • 选择3

我想保存组合框中每个选项的复选框状态。所以,假设我执行以下操作:

  • 在组合框中选择Choice1
  • 检查 CheckBox1Checkbox2
  • 在组合框中选择Choice2
  • 取消选择CheckBox1

如果我再次选择 Choice1,我希望我的应用程序“记住”为 Choice1 选择了 CheckBox1

解决这个问题的最佳方法是什么?

c# wpf mvvm
1个回答
0
投票

我建议您将更改

Checkboxes
值的逻辑放入组合框的
SelectionChanged
事件中。

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
  
  
    if  Choice1 in the combobox
       Check CheckBox1 and Checkbox2
     if  Choice2 in the combobox
         Deselect CheckBox1
    
}
© www.soinside.com 2019 - 2024. All rights reserved.