wpf - 选择 TreeViewItem Header 时,TextBlock 内容变得不可见
问题描述
下面包括一个简单的 WPF 应用程序的源代码,它使用TreeView
. 这是运行时的样子:
但是请注意,如果我单击其中一个TreeViewItem
标题:
中的文本TreeViewItem
不再可见。
什么是解决此问题的好方法,以便在选择标题时文本保持可见?
如您所见,代码主要使用 C#,因此首选基于 C# 的答案,但也欢迎使用 XAML;我只是将其转换为 C#。
更新
如果我按照以下答案中的建议Foreground
将TextBlock
explicitly 设置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;
}
}
}
解决方案
的Foreground
属性有可能TextBlock
被 的状态继承和更改TreeViewItem
。
将 的Foreground
属性设置TextBlock
为黑色。这样,TreeViewItem 将不会覆盖它。
推荐阅读
- csh - 如何在c-shell中将特殊字符作为参数传递
- python - python setup.py egg_info 检查日志以获得完整的命令输出 为什么要安装 instagram-scraper
- string - 如何将持续时间字符串格式化为天-小时-分钟字符串?
- postgresql - 在 Postgres 中是否有函数的内部版本号之类的东西?
- r - 无法在 CentOS7 上安装 facebook 先知的 R 库
- java - Java Graphics2D 仅在使用 nvidia-* 驱动程序时闪烁 (Ubuntu)
- flutter - Dart 的基于 Web 的调试器有 API 吗?
- javascript - NullInjectorError:没有 MatSelectionList 的提供者
- macos - 在 /Applications/Xcode.app 中找不到 Xcode
- python - 陈旧的元素,即使使用 WebDriverWait