2

質問は簡単です。次のバインディングは機能しませ。つまり、関連付けられたものは起動Triggerしません。

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

これを修正してバインディングを機能させるには、次のようにバインディング参照を中かっこで囲みます。

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

中括弧を追加すると、参照/バインディングの問題が解決するのはなぜですか?何が起こっているのですか?

御時間ありがとうございます。

4

2 に答える 2

1

これは、バインド先の完全な Expression を Binding が判断できないためです。中括弧に入れると、完全な式 (名前空間などを含む) を正しく判断できます。

中括弧で記述(dataAccess:DataGridTextSearch.IsAnyTextMatch)すると、マークアップ パーサーはバインディング全体を 1 つの式として受け取ります。そうしないと、 にバインドしようとしてスタックしてしまいdataAccess:ます。中括弧を使用すると、これが単一の式であるという明示的なステートメントが得られます

あなたが最後に私を手に入れたことを願っています:)

于 2013-06-14T09:21:35.327 に答える
0

複数のプロパティ (間接プロパティ ターゲティング)

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

propertyNameは、現在のプロパティの名前に解決される必要がありますDataContext。パス プロパティpropertyNameおよびpropertyName2は、関係に存在する任意のプロパティにすることができます。ここで、propertyName2は の値である型に存在するプロパティですpropertyName

単一のプロパティ、アタッチされているか、型修飾されている

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

括弧は、部分修飾を使用して a 内のこのプロパティをPropertyPath構築する必要があることを示しています。XML 名前空間を使用して、適切なマッピングを持つ型を見つけることができます。は、各アセンブリの宣言ownerTypeを通じて、XAML プロセッサがアクセスできる型を検索します。XmlnsDefinitionAttributeほとんどのアプリケーションには、既定の XML 名前空間がhttp://schemas.microsoft.com/winfx/2006/xaml/presentation名前空間にマップされているため、プレフィックスは通常、カスタム型またはその名前空間外の型にのみ必要です。propertyNameownerType に存在するプロパティの名前に解決する必要があります。この構文は、通常、次のいずれかの場合に使用されます。

  1. パスは、指定されたターゲットの種類を持たないスタイルまたはテンプレートの XAML で指定されています。非スタイル、非テンプレートの場合、プロパティは型ではなくインスタンスに存在するため、修飾された使用法は通常、これ以外の場合には有効ではありません。

  2. プロパティは添付プロパティです。

  3. 静的プロパティにバインドしています。

ストーリーボード ターゲットとして使用するには、propertyName として指定されるプロパティはDependencyProperty.

于 2013-06-14T10:29:22.260 に答える