- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 WPF 控件中,我有以下两个触发器:
<Trigger
Property="Controls:TreeViewExItem.IsMouseOver"
Value="True"
SourceName="ElementGrid">
<DataTrigger
Binding="{Binding
RelativeSource={RelativeSource AncestorType={x:Type Controls:TreeViewEx}},
Path=HoverHighlighting}"
Value="False">
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding
RelativeSource={RelativeSource AncestorType={x:Type Controls:TreeViewEx}},
Path=HoverHighlighting}"
Value="True"/>
<Condition
Binding="{Binding
(Controls:TreeViewExItem.IsMouseOver),
Source=ElementGrid}"
Value="True"/>
</MultiDataTrigger.Conditions>
System.Windows.Data Error: 17 : Cannot get 'IsMouseOver' value (type 'Boolean') from '' (type 'String'). BindingExpression:Path=(0); DataItem='String' (HashCode=1047858601); target element is 'TreeViewExItem' (Name=''); target property is 'NoTarget' (type 'Object') InvalidCastException:'System.InvalidCastException: Das Objekt des Typs "System.String" kann nicht in Typ "System.Windows.DependencyObject" umgewandelt werden.
最佳答案
我现在尝试了很多东西,但没有发现任何有用的东西。在有人证明我错之前,我必须假设 Triggers 和 DataTriggers 不能结合使用。
我的解决方案是不同的:我没有尝试从同一个触发器(需要不同的触发器类型)访问本地属性和父元素属性,而是将另一个 DependencyProperty 添加到我的子元素类并将其值绑定(bind)到父元素的属性。因此子元素不需要找到父元素的值——它总是拥有该值本身的当前副本。由于复制该值是在另一个地方完成的,它使触发器保持美观和小巧。 :-)
所以这就是我添加的 XAML 代码的样子。这是子项样式的新 setter :
<!-- Pass on the TreeViewEx' HoverHighlighting value to each item
because we couldn't access it otherwise in the triggers -->
<Setter
Property="HoverHighlighting"
Value="{Binding (Controls:TreeViewEx.HoverHighlighting),
RelativeSource={RelativeSource
AncestorType={x:Type Controls:TreeViewEx}}}" />
<!-- Set the border and background when the mouse is located over
the item and HoverHighlighting is active -->
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition
Property="Controls:TreeViewExItem.HoverHighlighting" Value="True"/>
<Condition
Property="Controls:TreeViewExItem.IsMouseOver" Value="True"
SourceName="ElementGrid"/>
</MultiTrigger.Conditions>
关于wpf - 如何将触发器与 SourceName 和 DataTrigger 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11686439/
是否可以使用 MultiTrigger评估多个元素的属性?不在模板中,而是在用户控件/窗口中。 例子:
我对 SourceName 的含义有疑问在 parse函数在 Parsec .似乎我阅读的所有书籍/博客/教程都跳过了它的内容并使用 "stdin" , "(stdin)"或任意字符串,例如 "tes
在我的 WPF 控件中,我有以下两个触发器: 和 两者都为自己工作正常。但我需要这些的组合。我试过这个: 但它什么也没做。我在输出窗口中收到此消息: System
我们目前正在尝试将现有的经典 ASP 页面集成到我们记录事件日志的新方法中。我们通过调用作为 COM 对象公开的 .NET 程序集来实现这一点,该程序集将实际记录到事件日志中。这一切都正常工作,但是当
我有一个 TraceSource 对象,用于记录 VB.Net 应用程序的初始化。它附加了几个 TraceListeners: ConsoleTraceListener TextWriterTrace
在阅读structured Streaming的源代码时,我对这个语法感到困惑。 在 microBatchExecution.scala 中 val _logicalPlan = analyzedPl
我正在尝试使用 ValueSourceAttribute 进行测试。 这是一个例子 [Test] public async Task TestDocumentsDifferentF
我正在使用 C# 读取 Windows 事件日志,我想从中选择/过滤条目。问题是事件查看器中显示的信息并不总是与我从 c# 获得的数据匹配。 例如: 事件查看器“来源”:“用户配置文件服务” 使用 E
我是一名优秀的程序员,十分优秀!