很难说出标题。我有一个普通的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中编写,它会将组合框中所有内容的颜色设置为灰色,而不会更改应用程序中的颜色。
答案 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那个。
祝你好运。