当ComboBox SelectedIndex为-1时,WPF ComboBoxItem背景更改

时间:2010-12-03 16:06:41

标签: wpf xaml wpf-controls

我正在尝试在XAML中的SelectedIndex为-1时设置WPF ComboBox的背景颜色。我试图在触发器中设置背景颜色,但是我收到错误告诉我无法在触发器的属性中设置绑定。

感谢

<ComboBox 
                    x:Name="cbFormNameList" 
                    ItemsSource="{Binding}" 
                    DisplayMemberPath="Name" 
                    SelectedValuePath="Name">
                <ComboBox.Style>
                    <Style TargetType="{x:Type ComboBoxItem}">
                        <Style.Triggers>
                            <Trigger Property="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedIndex}" Value="-1">
                                <Setter Property="Background" Value="#FFFAFFA9"/>
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </ComboBox.Style>
            </ComboBox>

2 个答案:

答案 0 :(得分:2)

您的样式是针对ComboBoxItem而不是组合框本身。当没有选择任何内容时,下面将更改ComboBox的背景:

<ComboBox.Style>
    <Style TargetType="{x:Type ComboBox}">
        <Style.Triggers>
            <Trigger Property="SelectedIndex" Value="-1">
                <Setter Property="Background" Value="#FFFAFFA9"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</ComboBox.Style>

该样式应直接以ComboBox为目标。

答案 1 :(得分:2)

您的TargetType和Trigger属性错误。尝试以下,它确实有效。组合框将以黄色开始,并在您更改选择时更改。

<ComboBox>
        <ComboBoxItem>
            Test
        </ComboBoxItem>
        <ComboBox.Style>
            <Style TargetType="ComboBox">
                <Style.Triggers>
                    <Trigger Property="SelectedIndex" Value="-1">
                        <Setter Property="Background" Value="#FFFAFFA9"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </ComboBox.Style>
    </ComboBox>