2

总而言之,这个问题很简单。下面的绑定不起作用即ascociatedTrigger不触发

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

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

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

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

谢谢你的时间。

4

2 回答 2

1

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

如果您(dataAccess:DataGridTextSearch.IsAnyTextMatch)使用大括号编写,则标记解析器会将您的整个绑定视为一个表达式。否则它会卡住试图绑定到dataAccess:. 使用大括号,您将有一个明确的声明,即这是一个单一的表达式

我希望你最终得到我:)

于 2013-06-14T09:21:35.327 回答
0

多个属性(间接属性定位)

<Binding Path="propertyName.propertyName2" .../>

propertyName必须解析为当前属性的名称DataContext。路径属性propertyNamepropertyName2可以是关系中存在的任何属性,其中propertyName2是存在于类型上的属性,它是 的值propertyName

单一属性,附加或其他类型限定

<object property="(ownerType.propertyName)" .../>

括号表示 a 中的这个属性PropertyPath应该使用部分限定来构造。它可以使用 XML 命名空间来查找具有适当映射的类型。XAML 处理器可以通过每个程序集中的声明访问的ownerType搜索类型。XmlnsDefinitionAttribute大多数应用程序都将默认 XML 命名空间映射到http://schemas.microsoft.com/winfx/2006/xaml/presentation命名空间,因此通常只有自定义类型或该命名空间之外的类型才需要前缀。propertyName必须解析为 ownerType 上存在的属性的名称。此语法通常用于以下情况之一:

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

  2. 该物业为附属物业。

  3. 您正在绑定到静态属性。

要用作情节提要目标,指定为 propertyName 的属性必须是DependencyProperty.

于 2013-06-14T10:29:22.260 回答