gpt4 book ai didi

wpf - 将 WPF 样式触发器绑定(bind)到自定义依赖项属性

转载 作者:行者123 更新时间:2023-12-04 04:18:21 24 4
gpt4 key购买 nike

我在这里找到了许多类似的线程,但似乎没有一个可以解决我的具体问题。

我需要在某些条件下突出显示文本框的背景。我创建了一个 Highlight 属性并尝试在样式中使用触发器来设置它,但它实际上并没有突出显示文本。

这是我的风格,简化:

<Style x:Key="TextBoxStyle" BasedOn="{StaticResource CommonStyles}">
<Style.Triggers>
<Trigger Property="Elements:DataElement.Highlight" Value="True">
<Setter Property="Control.Background"
Value="{DynamicResource EntryBoxHighlightBackground}"/>
</Trigger>
</Style.Triggers>
</Style>

元素定义为:
xmlns:Elements="clr-namespace:MDTCommon.Controls.Forms.Elements">

然后我有应用样式的部分:
<!-- Applies above style to all TextBoxes -->
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxContentHolder}" >
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}" />
<!-- Overrides the default Error Style -->
</Style>

DataElement 类后面的代码如下:
public static readonly DependencyProperty HighlightProperty = 
DependencyProperty.Register("Highlight", typeof(bool), typeof(DataElement));

public bool Highlight
{
get { return (bool)base.GetValue(HighlightProperty); }
set { base.SetValue(HighlightProperty, value); }
}

DataElement 最终派生自 UserControl,它包含对 TextBox 对象以及其他对象的引用。

在包含所有 DataElement 对象的 CustomForm 类中,我有以下设置颜色。
Resources["EntryBoxHighlightBackground"] = Brushes.Yellow;

因此,第一个问题是为 DataElement 设置 Highlight 属性不会导致文本框背景以黄色绘制。

另一个问题是我意识到我正在将这种样式应用于所有文本框,并且我可能在其他区域中有文本框,而这些文本框实际上并未包含在 DataElement 中,这可能会导致绑定(bind)问题。

最佳答案

尝试将触发器转换为 DataTrigger,并添加一个直接查看 DataElement 控件的绑定(bind),如下所示:

<DataTrigger Binding="{Binding Path=Highlight, RelativeSource={RelativeSource AncestorType={x:Type Elements:DataElement}}}" Value="True">
<Setter Property="Control.Background" Value="{DynamicResource EntryBoxHighlightBackground}"/>
</DataTrigger>

关于wpf - 将 WPF 样式触发器绑定(bind)到自定义依赖项属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11758836/

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