1

コンストラクターでラベルに入札を最初に割り当てると、ラベルは正しくバインドされ、CurrentMarket クラスの現在の ComponentData 値に基づいて正しい情報が表示されます。ただし、ComponentData が変更されると、OnPropertyChanged イベントは問題なく発生しますが、ProperyChanged ハンドラーは常に NULL です。誰かが私が間違っていることを親切に提案できますか?

ラベルがあり、バインディングを次のように設定します。

    public StyledLabel(string Property, int i)
    {
        Binding BindingText = new System.Windows.Data.Binding(Property);
        BindingText.Source = Statics.CurrentMarket.ComponentData;
        BindingText.Converter = new TextConverter();
        this.SetBinding(Label.ContentProperty, BindingText);

     }

現在の市場クラスは次のようになります。

public class CurrentMarket : INotifyPropertyChanged
{
    string sMarket = "";
    ComponentData cComponentData;

    public string Market
    {
        set
        {
            sMarket = value;
            OnPropertyChanged("Market");
            ComponentData = SharedBoxAdmin.Components[sMarket];
        }
        get
        {
            return sMarket;
        }
    }

    public ComponentData ComponentData
    {
        get { return cComponentData; }
        set
        {
            cComponentData = value;
            OnPropertyChanged("ComponentData");
        }
    }

    public CurrentMarket()
    {
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

 }

ありがとう!

4

1 に答える 1

3

バインド先のプロパティ名を ( の一部としてではなく) として指定してみPathBindingくださいSource

Binding BindingText = new System.Windows.Data.Binding(Property);
BindingText.Source = Statics.CurrentMarket;
BindingText.Path = new PropertyPath("ComponentData");
BindingText.Converter = new TextConverter();
this.SetBinding(Label.ContentProperty, BindingText);
于 2012-06-08T09:35:16.253 に答える