首页 > 解决方案 > wpf 从应用程序资源更改组合框背景

问题描述

我想将所有组合框的背景和下拉背景更改为图像,将胡佛颜色更改为透明,将胡佛边框颜色更改为白色。我尝试在“combobox”、“comboboxItem”和“checkbox”上绑定样式,但它不起作用。

这是我的组合框代码:

 <ComboBox Margin="0,0,0,2" DockPanel.Dock="Top" VerticalContentAlignment="Center" VerticalAlignment="Center" ItemsSource="{Binding AllTagsForFilter}" Height="23" FontStyle="Italic" FontFamily="SEGOWP" Foreground="Gray" FontSize="12" Text="{Binding TagFilterText}" IsReadOnly="True" IsEditable="True" Focusable="False">
            <ComboBox.ItemContainerStyle>
                <Style TargetType="ComboBoxItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                </Style>
            </ComboBox.ItemContainerStyle>
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox VerticalAlignment="Center" VerticalContentAlignment="Center" IsChecked="{Binding IsChecked}" Content="{Binding Name}" Height="25">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="Checked">
                                <i:InvokeCommandAction Command="{Binding DataContext.CmdChx_UpdateSearchTags, ElementName=self}" CommandParameter="{Binding}" />
                            </i:EventTrigger>
                            <i:EventTrigger EventName="Unchecked">
                                <i:InvokeCommandAction Command="{Binding DataContext.CmdChx_UpdateSearchTags, ElementName=self}" CommandParameter="{Binding}"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                    </CheckBox>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

而我目前使用的样式布局是这样的:

 <Style TargetType="{x:Type Button}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding DataContext.WindowStyleProp, ElementName=self, UpdateSourceTrigger=PropertyChanged}" Value="{x:Static enum:WindowStylesEnum.Dark}">
                <Setter Property="Background" >
                    <Setter.Value>
                        <ImageBrush TileMode="FlipY" Stretch="Uniform" AlignmentY="Top" Viewport="0,0,33,34" ViewportUnits="Absolute" ImageSource="{StaticResource DarkBackground2}"/>
                    </Setter.Value>
                </Setter>
                <Setter Property="Foreground" >
                    <Setter.Value>
                        <SolidColorBrush Color="White"/>
                    </Setter.Value>
                </Setter>
            </DataTrigger>
            <DataTrigger Binding="{Binding DataContext.WindowStyleProp, ElementName=self, UpdateSourceTrigger=PropertyChanged}" Value="{x:Static enum:WindowStylesEnum.Default}">
                <Setter Property="Background" >
                    <Setter.Value>
                        <SolidColorBrush Color="LightGray"/>
                    </Setter.Value>
                </Setter>
                <Setter Property="Foreground" >
                    <Setter.Value>
                        <SolidColorBrush Color="Black"/>
                    </Setter.Value>
                </Setter>
            </DataTrigger>
        </Style.Triggers>
    </Style>

我想要这样的东西,所以如果枚举发生更改,我可以更改属性。

标签: c#wpfcomboboxbinding

解决方案


推荐阅读