2009-07-07 28 views
24

WPFでは、既定でバインディングがどのように適用されるかをテンプレート化できるようにしたいと考えています。例えばWPF:バインディングの既定値を定義する

、私が書きたい:

Text="{Binding Path=PedigreeName}" 

しかし、私が入力したかのように、それは次のようになります。

Text="{Binding Path=PedigreeName, Mode=TwoWay, UpdateSourceTrigger=LostFocus, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" 

任意のアイデアを?

おかげで、

  • パトリック

答えて

16

ジョー・ホワイトの良い答えに加えて、あなたはまた、Bindingから継承し、必要なデフォルトのプロパティ値を設定するクラスを作成することができます。例:

+0

ありがとう、私はそれをそのように実装した。 [コード] パブリッククラスValidationBinding:結合 {パブリックValidationBinding(){ 初期化()。 } public ValidationBinding(文字列パス) :ベース(パス) { Initialize(); }プライベートボイド初期化(){ モード= BindingMode.TwoWay。 UpdateSourceTrigger = UpdateSourceTrigger.LostFocus; NotifyOnValidationError = true; ValidatesOnDataErrors = true; ValidatesOnExceptions = true; }} [/コード] – PBelanger

+0

これもシルバー3+で動作しますか? –

+0

XAMLの使用例は、素晴らしいことだ - いずれかを見つけることができません... – vines

25

はPropertyMetadataを取るDependencyProperty.Registerのオーバーロードのいずれかを使用します。 FrameworkPropertyMetadataのインスタンスを渡し、そのプロパティを設定します。

public class Dog { 
    public static readonly DependencyProperty PedigreeNameProperty = 
     DependencyProperty.Register("PedigreeName", typeof(string), typeof(Dog), 
      new FrameworkPropertyMetadata() { 
       BindsTwoWayByDefault = true, 
       DefaultUpdateSourceTrigger = UpdateSourceTrigger.LostFocus 
      } 
     ); 

私はぶっきらぼうNotifyOnValidationError、ValidatesOnDataErrors、またはValidatesOnExceptionsのデフォルトを設定する方法が表示されていないが、私は何を探して確認するために、この十分を使用していません。彼らはそこにいるかもしれない。

+0

私の場合、Dogクラスはビジネスモデルプロジェクトです。このプロジェクトではSystem.Windowsに依存関係を追加したくありません。私が探していた解決策は、その方向にありました。 App.xamlでは、一致するものは見つかりませんでした...もう一度ありがとうございます! – PBelanger

関連する問題