C# XAML绑定路径声明中大括号的相关性是什么

C# XAML绑定路径声明中大括号的相关性是什么,c#,wpf,binding,C#,Wpf,Binding,总之,问题很简单。以下绑定不起作用,即关联的触发器不触发 <DataTrigger Binding="{Binding dataAccess:DataGridTextSearch.IsAnyTextMatch, ElementName=dataGrid}" Value="false"> 为了解决这个问题并使绑定工作,我们将绑定引用放在大括号中,如下所示 <DataTrigger Binding="{Binding (dataAccess:DataGridTex

总之,问题很简单。以下绑定不起作用,即关联的
触发器不触发

<DataTrigger Binding="{Binding dataAccess:DataGridTextSearch.IsAnyTextMatch, 
    ElementName=dataGrid}" Value="false"> 

为了解决这个问题并使绑定工作,我们将绑定引用放在大括号中,如下所示

<DataTrigger Binding="{Binding (dataAccess:DataGridTextSearch.IsAnyTextMatch), 
    ElementName=dataGrid}" Value="false"> 

为什么添加大括号可以解决引用/绑定问题?发生了什么


感谢您的时间。

这是因为绑定无法确定要绑定到的完整表达式。如果将其放在大括号中,则可以正确确定完整的表达式(带有名称空间等)

如果使用大括号编写
(dataAccess:DataGridTextSearch.IsAnyTextMatch)
,标记解析器将把整个绑定作为一个表达式。否则,它将无法绑定到
数据访问:
。使用大括号,您将得到一个明确的语句,即这是一个表达式

我希望你最终明白我的意思:)

多重属性(间接属性目标)

括号表示
PropertyPath
中的此属性应使用部分限定来构造。它可以使用XML命名空间来查找具有适当映射的类型。
ownerType
通过每个程序集中的
xmlnDefinitionAttribute
声明搜索XAML处理器有权访问的类型。大多数应用程序都有映射到名称空间的默认XML名称空间,因此前缀通常仅对自定义类型或该名称空间之外的类型是必需的
propertyName
必须解析为ownerType上现有属性的名称。此语法通常用于以下情况之一:

  • 路径是在XAML中指定的,该XAML的样式或模板没有指定的目标类型。限定用法通常对除此之外的情况无效,因为在非样式、非模板的情况下,属性存在于实例上,而不是类型上

  • 该属性是附加属性

  • 您正在绑定到静态属性


  • 要用作故事板目标,指定为propertyName的属性必须是
    DependencyProperty

    此相关问题的答案应有帮助:[xaml语法中的圆括号][1][1]:是的,但为什么?为什么牙套会起作用?这是两种语法之间的明确区别,但您的答案并没有解决这一事实。。。
    <Binding Path="propertyName.propertyName2" .../>
    
    <object property="(ownerType.propertyName)" .../>