2017-01-07 7 views
0

私はバインドしているDataGridComboBoxの変更をINotifyPropertyChangedが更新する静的プロパティを作成しようとしています。INotifyPropertyChangedを使用する静的プロパティ。 C#

私はこの時に来た

私はこのエラーを取得しています、

エラーCS0026キーワード私の検索で「この」、静的プロパティでは有効ではありません静的 方法、または静的フィールド

Why can't you use the keyword 'this' in a static method in .Net?しかし、すべてを通過した後でさえ、私はまだこれを動作させる方法を理解できません。

しかし、私が変更するものは、静的なプロパティを作成しようとしていることを否定するだけですINotifyPropertyChanged ???

は私のコード:

private static List<string> _nursingHomeSectionListProperty; 

public static List<string> NursingHomeSectionListProperty 
{ 
    get { return _nursingHomeSectionListProperty; } 
    set 
    { 
     _nursingHomeSectionListProperty = value; 
     NotifyStaticPropertyChanged(); 
    } 
} 

とプロパティは、ハンドラ変更

public static event PropertyChangedEventHandler StaticPropertyChanged; 

public static void NotifyStaticPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     StaticPropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 

そして、私は非静的プロパティのプロパティ変更されたハンドラを使用していますどのように以下のコードがある、

public event PropertyChangedEventHandler PropertyChanged; 

public void NotifyPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 
+0

私はあなたのモデルで静的な特性が必要な理由を知りませんが、 'Invoke'の最初の引数は送信者です。単純な 'new object()'が実行します – Alex

+0

また、なぜ代理人を使用していますか? raiseメソッドNotify ...を呼び出して名前を付け、Onにしないでください。 – Sefe

+0

@Sefe? '.'演算子のためです。メソッドの名前は無関係です。 – Clemens

答えて

5

thisの代わりにnullを渡すだけです:

public static event PropertyChangedEventHandler StaticPropertyChanged; 

private static void NotifyStaticPropertyChanged([CallerMemberName] string name = null) 
{ 
    StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(name)); 
} 

静的プロパティ変更通知の詳細については、this blog postを参照してください。

+0

リンクのおかげで、これは私にそんなに役立ちます。 – KyloRen

+0

OK、私は問題を抱えています。あなたのリンクは 'Static Member'、' StaticPropertyChanged'の使い方を示していません。これにより、XAMLにエラーがスローされ、解決できないことが示されます。残念ながら、リンクはこれに触れていない、任意のアイデア? – KyloRen

+0

あなたは何を意味するのかよく分かりません。このポストでは、静的プロパティにバインドする方法も示しています。おそらく、新しいStackOverflowの質問をして、エラーの詳細を提供するでしょう。 – Clemens

関連する問題