复选框的IsChecked属性从不更改

时间:2019-10-18 00:50:13

标签: c# wpf checkbox imultivalueconverter

我有一个TreeView的{​​{1}}设置。它是HierarchialDataTemplate绑定到我的视图模型中的ItemsSource对象的集合,其中每个Overlay都有Overlay对象的集合(因此Layer)。对于每个HierarchialDataTemplate,我将显示一个Overlay和一个CheckBox,它们仅绑定到Label的{​​{1}}属性。

每次选中/取消选中其中一个复选框时,Overlay的当前NameOverlay属性将作为命令参数发送到我的viewmodel。我正在使用IsChecked发送这些邮件。

我的问题是CheckBox的{​​{1}}属性永远不会改变。我尝试同时使用MultiValueConverter和直接设置IsChecked属性,但是得到相同的结果。

下面是CheckBox的相关.xaml。这是使用DataTriggers属性。

Command

以下是使用TreeView的版本:

Command

这是我的<TreeView ItemsSource="{Binding OverlaysViewSource}" Name="LayersTreeView"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Layers}" > <StackPanel> <CheckBox IsChecked="True" Command="{Binding DataContext.SetLayersCmd, RelativeSource={RelativeSource AncestorType=UserControl}}"> <CheckBox.CommandParameter> <MultiBinding Converter="{StaticResource multiValueConverter}"> <Binding RelativeSource="{RelativeSource Self}" /> <Binding /> </MultiBinding> </CheckBox.CommandParameter> </CheckBox> <Label Content="{Binding Name}" /> </StackPanel> <HierarchicalDataTemplate.ItemTemplate> <DataTemplate> <StackPanel> <Label Content="{Binding Name}" /> </StackPanel> </DataTemplate> </HierarchicalDataTemplate.ItemTemplate> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView>

DataTriggers

我正在查看转换器和视图模型中的命令中的<TreeView ItemsSource="{Binding OverlaysViewSource}" Name="LayersTreeView"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Layers}" > <StackPanel> <CheckBox> <i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <i:InvokeCommandAction Command="{Binding DataContext.SetLayersCmd, RelativeSource={RelativeSource AncestorType=UserControl}}" > <i:InvokeCommandAction.CommandParameter> <MultiBinding Converter="{StaticResource multiValueConverter}"> <Binding RelativeSource="{RelativeSource AncestorType=CheckBox}" /> <Binding/> </MultiBinding> </i:InvokeCommandAction.CommandParameter> </i:InvokeCommandAction> </i:EventTrigger> <i:EventTrigger EventName="Unchecked"> <i:InvokeCommandAction Command="{Binding DataContext.SetLayersCmd, RelativeSource={RelativeSource AncestorType=UserControl}}" > <i:InvokeCommandAction.CommandParameter> <MultiBinding Converter="{StaticResource multiValueConverter}"> <Binding RelativeSource="{RelativeSource AncestorType=CheckBox}"/> <Binding /> </MultiBinding> </i:InvokeCommandAction.CommandParameter> </i:InvokeCommandAction> </i:EventTrigger> </i:Interaction.Triggers> </CheckBox> <Label Content="{Binding Name}" /> </StackPanel> <HierarchicalDataTemplate.ItemTemplate> <DataTemplate> <StackPanel> <Label Content="{Binding Name}" /> </StackPanel> </DataTemplate> </HierarchicalDataTemplate.ItemTemplate> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView> 值。它永远不会改变。 GUI也从不反映MultiValueConverter的变化。

0 个答案:

没有答案