Wpf 样式中自定义依赖项属性的触发器 问题
我定义了一个可重用控件MyControl,它扩展了一个文本框 我想将触发器设置为其依赖项属性之一。Wpf 样式中自定义依赖项属性的触发器 问题,wpf,xaml,Wpf,Xaml,我定义了一个可重用控件MyControl,它扩展了一个文本框 我想将触发器设置为其依赖项属性之一。 所以我添加了一个样式,带有触发器 但是如果我将样式的TargetType设置为MyControl,我会得到一个XAML警告,指出'MyControl'TargetType与元素'TextBlock'的类型不匹配 如果将其设置为TextBlock,则会出现编译错误,成员“MyDependencyProperty”无法识别或无法访问。 如何使用触发器定义此样式 样品 C#代码隐藏 namespa
所以我添加了一个样式,带有触发器 但是如果我将样式的TargetType设置为MyControl,我会得到一个XAML警告,指出
'MyControl'TargetType与元素'TextBlock'的类型不匹配
如果将其设置为TextBlock,则会出现编译错误,成员“MyDependencyProperty”无法识别或无法访问。
- 如何使用触发器定义此样式
样品
C#代码隐藏
namespace UserControls.Local
{
公共部分类MyControl:TextBlock
{
#特罗格多区
public static readonly dependencProperty TrogdorProperty=dependencProperty.Register(
“Trogdor”、typeof(bool)、typeof(MyControl)、新属性元数据(default(bool));
公墓
{
获取{return(bool)GetValue(TrogdorProperty);}
set{SetValue(TrogdorProperty,value);}
}
#端区
公共MyControl()
{
初始化组件();
}
}
}
XAML
我找到的解决方案是“完全限定”绑定上的依赖项属性:
<Trigger Property="local:MyControl.Trogdor" Value="True">
不确定您是否仍在寻找解决方案,但答案对我有效,而您的答案对我无效
它使用根元素上绑定的DataTrigger,而不是触发器:
<DataTrigger Binding="{Binding Path=Highlight, RelativeSource={RelativeSource AncestorType={x:Type Elements:DataElement}}}" Value="True">
<Setter Property="Control.Background" Value="{DynamicResource EntryBoxHighlightBackground}"/>
</DataTrigger>
对于您的解决方案,我按下按钮,变量的值会发生变化,但样式触发器不会应用这些变化,就像没有通知它变量的变化一样。为什么我的解决方案不起作用?它发出XAML警告了吗?它没有编译吗?它没有影响UI吗?@A在它编译之后,我按下按钮,变量的值发生了变化,但是样式触发器没有应用这些变化,就像他没有被告知变量的变化一样。我在其他帖子中也看到过类似于你的答案,但在我的情况下似乎不起作用。仍在试图找出原因。你的情况可能不一样,你可能在做一些不同的事情。否则,解决方案就会奏效。你能分享一个你的解决方案有效而我的解决方案无效的工作示例吗?通常最简单的解决方案是最好的。你为什么不直接使用..
而不是..
?