0

我查看了本网站上提供的所有答案以找到我的问题的答案,但我找不到可行的解决方案。

我有一个使用 ItemsSource 属性绑定到类的组合框。

类定义如下:

public class DataSource
{
    public string DisplayField { get; set; }
    public string ValueField { get; set; }
}

ComboBox 必须使用 DisplayMemberPath = "DisplayField" 和 SelectedValuePath = "ValueField" 来显示数据...这是在后面的代码中完成的,并在窗口加载时加载。

ComboBox 定义如下:

<ComboBox Grid.Row="0" Grid.Column="1" Margin="5 5 5 0" Name="releaseHoldDropDown" Width="100"/>  

如果下拉列表的值更改为“Release”,我需要一种将背景更改为绿色并将前景更改为白色的方法。

如果下拉列表的值更改为“保持”,我还需要将背景更改为红色,将前景更改为白色。

仅供参考:我正在使用 ExpressionLight.xaml 主题来设置整个应用程序的样式。

作为旁注,我还想要一种将我所有组合框的背景从灰色更改为白色的方法,以使它们更具可读性。所以我需要修改 ExpressionLight.xaml 但我不知道要编辑哪个部分来进行这些更改。

任何帮助将不胜感激。

谢谢你

4

3 回答 3

0

为什么不使用 style.trigger?

        <ComboBox.Style>
            <Style TargetType="ComboBox">
                <Setter Property="Background" Value="Transparent"/>
                <Setter Property="Foreground" Value="Black"/>
                <Style.Triggers>
                    <Trigger Property="SelectedValue" Value="Release">
                        <Setter Property="Background" Value="Green"/>
                        <Setter Property="Foreground" Value="White"/>
                    </Trigger>
                    <Trigger Property="SelectedValue" Value="Hold">
                        <Setter Property="Background" Value="Red"/>
                        <Setter Property="Foreground" Value="White"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </ComboBox.Style>

这可能是你的开始

于 2012-05-09T06:53:33.653 回答
0

由于您只想更改前景色而不是背景色(保持白色),因此在releaseHoldDropDown_SelectionChanged事件中使用

private void releaseHoldDropDown_SelectionChanged(object sender, FooBar e)
{
   releaseHoldDropDown.ForeGround = new SolidColorBrush(Colors.White);

   DataSource ds = (DataSource)releaseHoldDropDown.SelectedItem;

   if (ds.DisplayField == "Release")
        releaseHoldDropDown.Background = new SolidColorBrush(Colors.Green);
   else if(ds.DisplayField == "Hold")
        releaseHoldDropDown.Background = new SolidColorBrush(Colors.Red);
}

如果你能给我 ExpressionLight.xaml,我可以帮助你。那只有我能帮忙

于 2012-05-09T01:25:42.980 回答
0

您是否尝试更改模板控件的必要颜色,如下所示?

<ComboBox x:Name="comboBox"
            ItemsSource="{Binding Items}"
            Margin="0,0,0,10"
            Background="White">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <Grid Background="White">
                <TextBlock Foreground="Black" Text="{Binding Name}"/>
            </Grid>    
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>
于 2017-01-30T00:25:49.050 回答