如何改变边框背景,当组合框得到焦点

本文关键字:组合 焦点 背景 何改变 改变 边框 | 更新日期: 2023-09-27 18:18:17

我有一个Border which Content ComboBox,现在我想在ComboBox获得焦点时改变Border的背景!!

我已经试过这个代码,但它不工作:(

<Border CornerRadius="4" Margin="6,2,2,2" >
    <StackPanel Orientation="Horizontal" x:Name="Tester">   
        <Label Content=" Signature :" Margin="10,0,0,0" FontFamily="Times New Roman" FontWeight="Normal" FontSize="14"  ToolTip="You can join a file text containing your query with simple drag and drop of file here"/>
        <ComboBox x:Name="Signatures" Margin="2,4,4,4" IsSynchronizedWithCurrentItem="False" FontWeight="Normal" FontFamily="Times New Roman" Width="180" IsTextSearchEnabled="True" IsEditable="True" FontSize="14" MouseDoubleClick="Signatures_MouseDoubleClick" MouseLeftButtonDown="Signatures_MouseDoubleClick"  >
            <ComboBoxItem Content="Serializable" HorizontalAlignment="Left" FontWeight="Normal" />
            <ComboBoxItem Content="Comparable" HorizontalAlignment="Left"/>
            <ComboBoxItem Content="CharSequence" HorizontalAlignment="Left"/>
            <ComboBoxItem Content="Number" HorizontalAlignment="Left"/>
            <ComboBoxItem Content="String" HorizontalAlignment="Left"/>
            <ComboBoxItem Content="long" HorizontalAlignment="Left"/>
            <ComboBoxItem Content="short" HorizontalAlignment="Left"/>
            <ComboBoxItem Content="integer" HorizontalAlignment="Left"/>
            <ComboBoxItem Content="double" HorizontalAlignment="Left"/>
            <ComboBoxItem Content="float" HorizontalAlignment="Left"/>
            <ComboBoxItem Content="byte" HorizontalAlignment="Left"/>
            <ComboBoxItem Content="boolean" HorizontalAlignment="Left"/>
            <ComboBoxItem Content="void" HorizontalAlignment="Left"/>
        </ComboBox>
    </StackPanel>
    <Border.Style>
        <Style TargetType="Border">
            <Setter Property="Background" Value="{x:Null}"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=Signatures, Path=IsFocused}" Value="True">
                    <Setter Property="Background" Value="BurlyWood"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
</Border>

你能帮帮我吗?

如何改变边框背景,当组合框得到焦点

问题是焦点并不完全在您的ComboBox上,而是在子元素上,AFAIK WPF无法告诉您焦点是否在元素内。

所以你应该添加更多的DataTrigger:

<Style.Triggers>
    <DataTrigger Binding="{Binding ElementName=Signatures,Path=IsFocused}" Value="True">
        <Setter Property="Background" Value="BurlyWood"/>
    </DataTrigger>
    <DataTrigger Binding="{Binding ElementName=Signatures,Path=IsSelectionBoxHighlighted}" Value="True">
        <Setter Property="Background" Value="BurlyWood"/>
    </DataTrigger>
    <DataTrigger Binding="{Binding ElementName=Signatures,Path=IsDropDownOpen}" Value="True">
        <Setter Property="Background" Value="BurlyWood"/>
    </DataTrigger>