gpt4 book ai didi

c# - 所选列表框项的前景色的 Wpf 样式资源

转载 作者:行者123 更新时间:2023-11-30 14:44:23 25 4
gpt4 key购买 nike

背景:我正在创建一个自定义列表框,每个列表框项目上都有单选按钮,因此本质上它将是一个 RadioButtonList。该控件完全是用代码创建的。截至目前,控件呈现和行为正确并支持 2 个方向(水平/垂直)。列表框使用 ItemTemplate,它是一个带有 RadioButton 和 TextBlock 的 StackPanel。

到目前为止,我已经能够通过使用将其背景设置为透明的样式来防止在选择项目时更改项目的背景颜色。

我也想对前景色做同样的事情。

基本上,ListBox的Selection模式是单一的,当一个item被选中时,我只想让它反射(reflect)到RadioButton上。

我正在使用以下代码来设置 ItemContainerStyle:

System.Windows.Style style =  
new System.Windows.Style(typeof(System.Windows.Controls.ListBoxItem));

System.Windows.Media.SolidColorBrush brush =
new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Transparent);

style.Resources.Add(System.Windows.SystemColors.HighlightBrushKey, brush);

我的模板的 TextBlock 是使用 System.Windows.FactoryFrameworkElement 创建的,如下所示:

System.Windows.FrameworkElementFactory factoryTextBlock =   
new System.Windows.FrameworkElementFactory(typeof(System.Windows.Controls.TextBlock));
factoryTextBlock.SetBinding(System.Windows.Controls.TextBlock.TextProperty, new System.Windows.Data.Binding("Description"));
factoryStackPanel.AppendChild(factoryTextBlock);

然后将 FactoryTextBox 附加到 FactoryStackPanel 并设置为 ListBox 的 ItemTemplate。

目前,当我选择项目时,我将背景颜色设置为透明。由于文本默认设置为白色,因此在选择项目时它会在视觉上消失。我正在寻找一种在文本 block 被选中时在其前景上设置颜色的方法。现在它可以是黑色,但最终它会引用更高级别的字体颜色。

最佳答案

这是一个使用 XAML 的示例,我将把 C# 的翻译留给您:

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid.Resources>
<x:Array x:Key="data" Type="{x:Type sys:String}">
<sys:String>sphinx</sys:String>
<sys:String>of</sys:String>
<sys:String>black</sys:String>
<sys:String>quartz</sys:String>
</x:Array>
</Grid.Resources>
<ListBox ItemsSource="{StaticResource data}">
<ListBox.Resources>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Pink"/>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.Resources>
</ListBox>
</Grid>

关于c# - 所选列表框项的前景色的 Wpf 样式资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/541866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com