0

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

4

1 回答 1

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>

*edit 类中的属性可以通过与这些复选框不同的方式进行更改吗?如果是,您可以在属性更改时触发事件或直接操作相应框的检查状态。另外,这些盒子是否相互依赖?还是只是一个依赖于另一个(A <=> B 或 A => B)?

要在 boxe 的状态之一发生更改时操作属性,您可以使用 Checked/Unchecked 事件。或使用此处Pat 的回答中所述的 DependencyProperty

于 2012-11-23T09:11:56.063 回答