更改组合框内的字体颜色,来自SQL的数据

时间:2013-11-28 14:38:20

标签: sql wpf combobox

很难说出标题。我有一个普通的WPF组合框,数据(名称列表)从SQL中提取,我想更改文本颜色和

Foreground ="Black"
当我真正选择用户时,

似乎才有效。有什么建议我可以改变这个吗?

编辑:我还没有尝试过其他任何事情,因为我知道这样做可以实际改变文字颜色。

EDIT2:

 <ComboBox x:Name="cmbDepartment" HorizontalAlignment="Left" Height="25" Margin="92,580,0,0" VerticalAlignment="Top" Width="400" Foreground="#FFA2A2A2" FontSize="13"/>

这是我的组合框的XAML代码。我已经发现我的主题是蓝色,但是当我更改主题上的字体颜色时,所有内容都会在我的应用程序中转换为该颜色。是否有一段代码可以在我的XAML中编写,它会将组合框中所有内容的颜色设置为灰色,而不会更改应用程序中的颜色。

3 个答案:

答案 0 :(得分:0)

我假设最初ComboBox没有显示任何选定的值,一旦你点击它,它会显示具有正确颜色的名称列表(是你通过Foreground属性分配的任何颜色)。

如果是这样,可能是您没有选择项目吗?设置项目后,如果不希望ComboBox选项显示为空,则必须选择一个项目(例如SelectedIndex,SelectedValue)。

打扰一下,如果不是这样,但问题很模糊......

答案 1 :(得分:0)

以下是使用MVVM的示例

XAML

<Window x:Class="SelfBinding.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ComboBox ItemsSource="{Binding MyItems}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}" Foreground="{Binding Name}"/>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
    </Grid>
</Window>

代码隐藏

using System.Collections.Generic;
using System.Windows;

namespace SelfBinding
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = new MyViewModel();
        }
    }

    public class MyViewModel
    {
        public List<MyItem> MyItems { get; set; }

        public MyViewModel()
        {
            MyItems = new List<MyItem>();
            MyItems.Add(new MyItem { Name = "Black" });
            MyItems.Add(new MyItem { Name = "Red" });
            MyItems.Add(new MyItem { Name = "Orange" });
            MyItems.Add(new MyItem { Name = "Green" });
        }

    }

    public class MyItem
    {
        public string Name { get; set; }
    }
}

在你的on上测试它创建一个新的WPF项目副本&amp;过了代码

答案 2 :(得分:0)

也许你可以覆盖组合框资源中的主题颜色。 This是这样做的一个例子。

我只是不知道你需要覆盖的密钥到底是什么。我想你可以google那个。

祝你好运。