下面包括的是使用TreeView
的简单WPF应用程序的源代码。运行时的外观如下:
但是请注意,如果我单击TreeViewItem
标头之一:
TreeViewItem
中的文本不再可见。
什么是解决此问题的好方法,以便在选择标题时文本仍然可见?
如您所见,代码主要是用C#编写的,因此首选基于C#的答案,但也欢迎使用XAML。我将其转换为C#。
更新
如果我按照以下答案中的建议将Foreground
中的TextBlock
临时设置为Black
:
{
var tree_view_item = new TreeViewItem() { Header = "abc" };
tree_view_item.Items.Add(new ScrollViewer() { Content = new TextBlock() { Text = "123", Foreground = new SolidColorBrush(Colors.Black) } });
tree_view.Items.Add(tree_view_item);
}
它确实确实有帮助:
但是,如果我然后选择TextBlock
,则文本块将显示为黑底蓝色,这有点尴尬:
是否有一种方法还可以更改突出显示项目时使用的背景颜色?
MainWindow.xaml
:
<Window x:Class="TreeViewItemHighlightColor.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TreeViewItemHighlightColor"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</Window>
MainWindow.xaml.cs
:
using System.Windows;
using System.Windows.Controls;
namespace TreeViewItemHighlightColor
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var tree_view = new TreeView();
{
var tree_view_item = new TreeViewItem() { Header = "abc" };
tree_view_item.Items.Add(new ScrollViewer() { Content = new TextBlock() { Text = "123" } });
tree_view.Items.Add(tree_view_item);
}
{
var tree_view_item = new TreeViewItem() { Header = "bcd" };
tree_view_item.Items.Add(new ScrollViewer() { Content = new TextBlock() { Text = "234" } });
tree_view.Items.Add(tree_view_item);
}
{
var tree_view_item = new TreeViewItem() { Header = "cde" };
tree_view_item.Items.Add(new ScrollViewer() { Content = new TextBlock() { Text = "345" } });
tree_view.Items.Add(tree_view_item);
}
Content = tree_view;
}
}
}
答案 0 :(得分:1)
Foreground
的{{1}}属性有可能被TextBlock
的状态继承和更改。
将TreeViewItem
的{{1}}属性设置为黑色。这样,TreeViewItem将不会覆盖它。