首页 > 解决方案 > 根据 ComboBox 选择使按钮可见

问题描述

如果使用 XAML 在 ComboBox 中选择了某个值,如何使 Button 显示?

这是我尝试过的。

谢谢

        <ComboBox x:Name="ComboBox" Margin="171,102,426,271">
        <ComboBoxItem>Testing</ComboBoxItem>
        <ComboBoxItem>Again</ComboBoxItem>
        <ComboBoxItem>Finally</ComboBoxItem>
    </ComboBox>

    <Button Margin="10, 0, 0, 0" >
        <Button.Style>
            <Style TargetType="Button">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding SelectedIndex, ElementName=ComboBox}" Value="Testing">
                        <Setter Property="Visibility" Value="Hidden"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>

标签: wpfxaml

解决方案


绑定路径应该SelectedItem.Content让您的触发器工作:

<Button Margin="10, 0, 0, 0" >
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedItem.Content, ElementName=ComboBox}" Value="Testing">
                    <Setter Property="Visibility" Value="Hidden"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

您当前正在绑定到该SelectedIndex属性,而该属性的值永远不会是“Testing”。当前选中ComboBoxItem的 的Content属性可能有。

如果您想在Button选择“测试”选项时显示,您还应该修改设置器的值:

<Button Margin="10, 0, 0, 0" >
    <Button.Style>
        <Style TargetType="Button">
            <Setter Property="Visibility" Value="Hidden"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedItem.Content, ElementName=ComboBox}" Value="Testing">
                    <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

推荐阅读