0

ビューモデルのプロパティにバインドできる新しいプロパティを追加するには、既存のコントロール(私の場合はComboBox)をどのように拡張しますか?カスタムコントロールに新しいプロパティをバインドしてモデルを表示する

次のように私は、コントロールのクラスに依存プロパティを持っている:

public class MyComboBox : ComboBox 
{ 
    public static readonly DependencyProperty MyTextProperty = 
     DependencyProperty.Register("MyText", typeof(string), typeof(MyComboBox)); 

    public string MyText 
    { 
     get 
     { 
      return GetValue(MyComboBox.MyTextProperty).ToString(); 
     } 

     set 
     { 
      SetValue(MyComboBox.MyTextProperty, value);    
     } 
    } 

そして、このようにXAMLから宣言それにバインドする:

<MyComboBox MyText="{Binding MyTextOnViewModel, 
    UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/> 

バインディングがうまく動作しません、任意のアイデアなぜ?

ありがとうございました。

答えて

2

プロパティがMyTextPropertyとして宣言されている間、getterとsetterはTestTextPropertyを参照します。

あなたのゲッターはまた、より完全な手順については、このpageを参照してください。代わりに

return (string)GetValue(MyTextProperty); 

().ToStringを呼び出すのでキャストする必要があります。

+0

最初の点は入力ミスです。残念ながら病気をチェックしてください。 – andrej351

+0

大丈夫です。助けてくれてありがとう、しかし、私は、私が言及を忘れていたDataGridのセルのtamplateで私のカスタムコントロールを持っていた。 バインディングを{Binding DataContext.MyTextOnViewModel、RelativeSource = {RelativeSource FindAncestor、AncestorType = {x:Type Pages:MyPage}}に変更しました。 – andrej351

関連する問題