2009-04-28 4 views
1

を変更したとき、私はWPFに新しいですので、これは、おそらく基本的な質問..ですUpdateフィールドプロパティは

私はテキストボックスとボタンが含まれているユーザーコントロール(コードはこの質問のために簡略化されている)があります。

を私がしたDependencyPropertyとして "MYPROPERTY" を登録している後ろのコードで
<UserControl x:Name="this"> 
    <TextBox Text="{Binding ElementName=this, Path=MyProperty.Value}"/> 
    <Button x:Name="MyButton" Click="Button_Click"/> 
</UserControl> 

public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyProperty", typeof(MyProperty), typeof(MyPropertyNumeric), new UIPropertyMetadata(null)); 

A "MYPROPERTYは" INotifyPropertyChangedの実装を私が定義されたクラスです。 "MyProperty.Value"はオブジェクト型です。

ボタンをクリックすると、コードビハインドでMyProperty.Valueが変更されます。 TextBoxに自動的に新しい値を表示させたい。私はINotifyPropertyChangedを実装して以来、上記がうまくいくと思っていますが、そうではありません。誰でもこの方法を知っていますか?

答えて

1

プロパティの名前が更新されたときにOnPropertyChangedイベントを呼び出していますか?

例えば、

public class MyProperty : INotifyPropertyChanged { 
    private string _value; 

    public string Value { get { return _value; } set { _value = value; OnPropertyChanged("Value"); } } 

    public event PropertyChangedEventHandler PropertyChanged; 

    protected void OnPropertyChanged(string name) { 
    PropertyChangedEventHandler handler = PropertyChanged; 
    if(handler != null) { 
     handler(this, new PropertyChangedEventArgs(name)); 
    } 
    } 
} 

PropertyChangedイベントを更新したいプロパティの名前で焼成することを確認することが重要です。

+0

ありがとう!私は "値"の代わりにプロパティの名前(WPFには意味がない)を割り当てました –

0

バインディングモード= "OneWay"に追加しようとすると、私は実際に何をしていないのですか

+0

私のバインディングを両方向にしたいのですが、うまくいきません。 –