全部,问题很简单。以下绑定不工作,即ascociated Trigger
不会触发
<DataTrigger Binding="{Binding dataAccess:DataGridTextSearch.IsAnyTextMatch,
ElementName=dataGrid}" Value="false">
要修复此问题并使绑定工作,我们将绑定引用放在大括号中,如下所示
<DataTrigger Binding="{Binding (dataAccess:DataGridTextSearch.IsAnyTextMatch),
ElementName=dataGrid}" Value="false">
为什么添加大括号会解决引用/绑定问题以及发生了什么?
感谢您的时间。
答案 0 :(得分:1)
这是因为Binding无法确定要绑定到的完整Expression。如果你把它放到括号中,可以正确地确定完整的表达式(带命名空间等)。
如果用括号写(dataAccess:DataGridTextSearch.IsAnyTextMatch)
,标记解析器会将整个绑定作为一个表达式。否则它会试图绑定到dataAccess:
。使用大括号,您将明确声明这是单个表达式
我希望你能得到我:)
答案 1 :(得分:0)
多个属性(间接属性定位)
<Binding Path="propertyName.propertyName2" .../>
propertyName
必须解析为当前DataContext
的属性的名称。路径属性propertyName
和propertyName2
可以是关系中存在的任何属性,其中propertyName2
是存在于propertyName
的值类型上的属性。 / p>
单一属性,附加或其他类型合格
<object property="(ownerType.propertyName)" .../>
括号表示PropertyPath
中的此属性应使用部分限定条件构造。它可以使用XML命名空间来查找具有适当映射的类型。 ownerType
通过每个程序集中的XmlnsDefinitionAttribute
声明搜索XAML处理器可以访问的类型。大多数应用程序都具有映射到http://schemas.microsoft.com/winfx/2006/xaml/presentation命名空间的默认XML命名空间,因此通常只有自定义类型或类型在该命名空间之外才需要前缀。 propertyName
必须解析为ownerType上存在的属性的名称。此语法通常用于以下情况之一:
路径在XAML中指定,该路径位于没有指定目标类型的样式或模板中。合格用法通常对除此之外的其他情况无效,因为在非样式的非模板情况下,该属性存在于实例上,而不是类型。
该物业是附属物。
您绑定到静态属性。
要用作故事板目标,指定为propertyName的属性必须为DependencyProperty
。