假设我有一个最小的WPF应用程序如下:
我的代码由以下类组成:
MainWindow
,包含以下属性的视图:
List<string> Choices
string Choice
List<CheckedListItem> Checkboxes
MainWindowViewModel
,ViewModelCheckedListItem
,复选框项的表示,由以下属性组成:
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>
组合框中可能有以下值:
我想保存组合框中每个选项的复选框状态。所以,假设我执行以下操作:
如果我再次选择 Choice1,我希望我的应用程序“记住”为 Choice1 选择了 CheckBox1。
解决这个问题的最佳方法是什么?
我建议您将更改
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
}