一个设置由第二个设置决定

时间:2012-11-23 07:36:20

标签: c# wpf

我在不同的WPF对话框中有相同的选项。一种选择取决于另一种选择。如果我点击第一个,我也想检查第二个。两个选项都对应于不同类中的私有bool变量。这个问题的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用Style.Triggers在WPF / XAML中执行此操作。例如,以下代码是关于如何根据复选框的状态(已选中/未选中)绑定文本块控件的IsEnabled状态的示例

<TextBlock Text="mytextblockText: ">
                    <TextBlock.Style>
                        <Style TargetType="TextBlock">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding IsChecked,ElementName=myCheckbox}" Value="False">
                                    <Setter Property="IsEnabled" Value="True"/>
                                </DataTrigger>
                                <DataTrigger Binding="{Binding IsChecked, ElementName=myCheckbox}" Value="True">
                                    <Setter Property="IsEnabled" Value="False"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </TextBlock.Style>                            
                </TextBlock>

如果选中另一个复选框时要检查的复选框,它看起来像这样(我猜)

<CheckBox>
            <CheckBox.Style>
                <Style TargetType="CheckBox">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding IsChecked,ElementName=myCheckbox}" Value="False">
                            <Setter Property="IsChecked" Value="True"/>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding IsChecked, ElementName=myCheckbox}" Value="True">
                            <Setter Property="IsChecked" Value="False"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </CheckBox.Style>                            
        </CheckBox>

*编辑 可以通过不同于那些复选框的内容来更改类中的属性吗?如果是,您可以在更改属性时触发事件或直接操作相应框的检查状态。这些盒子是否相互依赖?或者只是一个依赖于另一个(A&lt; =&gt; B或A =&gt; B)?

如果在更改其中一个boxe状态时操作属性,则可以使用Checked / Unchecked事件。或者使用DependencyProperty,如Pat's answere over here

中所述