Combobox WPF的样式触发

时间:2012-11-20 09:54:51

标签: wpf combobox

我是WPF的新宠。我有这个问题与组合框。

当Combobox第一次渲染并且无法显示时,组合框的边框必须设置为红色,但遗憾的是它没有显示。

请找到代码段

<Style x:Key="requiredFieldValidationStyleComboBox">
    <Style.Triggers>
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=SelectedItem.Content}" Value="{x:Null}">
            <Setter Property="ComboBox.BorderBrush" Value="{StaticResource FaultyBorderBrush}" />
            <Setter Property="ComboBox.ToolTip" Value="Input value is mandatory" />
        </DataTrigger>
    </Style.Triggers>
</Style>

2 个答案:

答案 0 :(得分:0)

我不知道你绑定到selectedItem的对象是什么。 但我有一种感觉,你会问,SelectedItem本身是否等于null, 然后代码应如下所示:

<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=SelectedItem}" Value="{x:Null}">
                <Setter Property="ComboBox.BorderBrush" Value="{StaticResource FaultyBorderBrush}" />
                <Setter Property="ComboBox.ToolTip" Value="Input value is mandatory" />
            </DataTrigger>

“内容”是不必要的。

这是你想要的吗?

答案 1 :(得分:0)

一旦我将它添加到组合框中,我发现你的风格完美地工作,确保组合框实际上具有它的样式属性设置,或者如果你希望它应用于所有组合框,则删除x:Key属性。

 <Window.Resources>
        <Style x:Key="requiredFieldValidationStyleComboBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=SelectedItem.Content}" Value="{x:Null}">
                    <Setter Property="ComboBox.BorderBrush" Value="Red" />
                    <Setter Property="ComboBox.ToolTip" Value="Input value is mandatory" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid Margin="0,0,401,279">
        <ComboBox Style="{StaticResource requiredFieldValidationStyleComboBox}" Margin="46,66,-46,-66"/>
    </Grid>

Nothing selected

Selected