4

私はこれに少し立ち往生しています。TextPropertyの一部TextBoxではない一部のバインドをクリアすると、正常にDataTemplate動作します。しかし、TextBoxが の一部である場合DataTemplate、以下の抜粋に示すように、バインドのクリアはノーオペレーションのようです。ウォッチの値はtrue、バインディングがおそらくクリアされた後でもあります。

ここに画像の説明を入力

これは設計によるものですか?そうでない場合、私は何を間違っていますか?

の MSDN ドキュメントは次のClearBinding(...)とおりです。 http://msdn.microsoft.com/en-us/library/system.windows.data.bindingoperations.clearbinding

4

2 に答える 2

4

この問題をカバーするこのMSDN の投稿を見つけました。実際の説明なしに問題を放置しているように見えますが、問題なく機能するように見える回避策を提供します。

ClearBinding の呼び出しを、バインディングをダミーの値に置き換えることで置き換えます。

AssociatedObject.SetBinding(TextBox.TextProperty, "dummy");

コントロールがDataTemplate. したがって、それを回避し、TextBoxes fromDataTemplateおよびそれ以外をカバーするために、次のようにします。

BindingOperations.ClearBinding(AssociatedObject, TextBox.TextProperty);
if (BindingOperations.IsDataBound(AssociatedObject, TextBox.TextProperty))
    AssociatedObject.SetBinding(TextBox.TextProperty, "dummy");

そしてほら、バインディングは「切断」されているので、私の透かしは今ではうまく機能しているようです。

于 2012-07-26T17:02:52.117 に答える
1

これが機能するかどうかはわかりませんが (試していません)、MSDN からのこの抜粋に記載されている方法を使用してみてください(BindingOperations.ClearAllBindings()以下のMSDNがデータ テンプレートを参照する方法を参照してください)。

バインディングをクリアすると、バインディングが削除され、依存関係プロパティの値がバインディングなしの値に変更されます。この値は、デフォルト値、継承された値、またはデータ テンプレート バインディングからの値である可能性があります。

オブジェクトの可能なすべてのプロパティからバインディングをクリアするには、 を使用します ClearAllBindings

于 2012-07-26T12:38:18.087 に答える