私は現在Silverlight 5でWebサイトを作成しています。私はパブリック静的クラスを設定して、そのクラスで私はパブリックstatic intが定義されています。 MainPageクラス(パブリック部分クラス)では、public static intが変更されたときにイベントをキャプチャします。私のためにこれを行うためのイベントを設定する方法はありますか?同じ行動を取ることができる別の方法がありますか? (それとも私も可能やろうとしています何ですか?)static int変数が変更されたときにイベントをトリガしますか?
2
A
答えて
4
ハンスが言ったことについて詳しく説明するには、代わりにフィールド
フィールドのプロパティを使用することができます。
public static class Foo {
public static int Bar = 5;
}
プロパティ:
public static class Foo {
private static int bar = 5;
public static int Bar {
get {
return bar;
}
set {
bar = value;
//callback here
}
}
}
通常のフィールドと同じようにプロパティを使用します。それらをコーディングするとき、value
キーワードが自動的にセットアクセッサに渡され、変数が設定されている値になります。例えば、
Foo.Bar = 100
は100
を通過するので、value
は100
だろう。
プロパティは、自動的に実装されない限り値を格納しません。この場合、アクセサ(getおよびset)のボディを定義することはできません。このため、プライベート変数bar
を使用して実際の整数値を格納するのはこのためです。
編集:実際には、MSDNは非常に良く例があります。
using System.ComponentModel;
namespace SDKSample
{
// This class implements INotifyPropertyChanged
// to support one-way and two-way bindings
// (such that the UI element updates when the source
// has been changed dynamically)
public class Person : INotifyPropertyChanged
{
private string name;
// Declare the event
public event PropertyChangedEventHandler PropertyChanged;
public Person()
{
}
public Person(string value)
{
this.name = value;
}
public string PersonName
{
get { return name; }
set
{
name = value;
// Call OnPropertyChanged whenever the property is updated
OnPropertyChanged("PersonName");
}
}
// Create the OnPropertyChanged method to raise the event
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
}
+0
ありがとう!これを機能させるために、私はちょうどセットアップしました:Foo.PropertyChanged + =新しいPropertyChangedEventHandler(Foo_PropertyChanged); MainPageクラスではすべてがうまくいった。私はOnPropertyChangedをpublic static voidに変更する必要がありました。 –
関連する問題
- 1. javascriptでは、変数の値が変更されたときにイベントをトリガする方法は?
- 2. C#静的Arraylist数が変更されたときにイベントをトリガする方法は?
- 3. Int変数が変更されない
- 4. タブが変更されたときにチェックボックスのイベントが変更されない
- 5. 変数が変更されたときにイベントを生成し、コードクラスからフォームクラスcに送信します。#
- 6. public static elementが自動的に変更されました
- 7. 変数が設定されたときに変数値が変更される
- 8. 変数が変更されたときに別のオブジェクトの関数をトリガする方法。 Python
- 9. チェックボックスのトリガ変更イベント
- 10. jsトリガ変更イベントをキャッチできますか?
- 11. コレクションが変更されたとき、Aurelia CollectionObserverハンドラはトリガされません
- 12. モデルが変更されたときの変数の変更
- 13. ListView内のListViewItemの数が変更された場合にトリガするイベントはありますか? (Windowsフォーム)
- 14. MKMAPVIEWエクステントが変更されたときに発生するイベント
- 15. 変数がフィールドに変更されたときに、スタックをヒープに変更するプロセスは何ですか?
- 16. 変数が更新されたときに変数のパラメータが変更された関数
- 17. オブジェクトの配列のプロパティ値が変更されたときのトリガ関数
- 18. プロパティ変更イベント実際に変更されていないときのイベント
- 19. クラス変数が何とか変更されました
- 20. 変数が変更されたときにAngular2コンポーネントビューが更新されない
- 21. Angular2:変数が変更されたときにビューが更新されない
- 22. プロパティが変更されたときにDataTemplateSelectorをトリガする方法
- 23. ラジオボタンが変更されたイベントの変更を2回確認しました
- 24. ダイナミックCRMイベントはエンティティエントリの変更をトリガしますか?
- 25. 入力変数が変更されたときに、tf変数の値が変更されない
- 26. Googleアナリティクスのユニークなイベントは、期間が変更されたときに変更されます。
- 27. フォーム内の子が変更された(描画された)ときにイベントが発生しますか?
- 28. IEでクリックする前にトリガされたイベントを変更する
- 29. ユーザーがタップしたときにトリガされるイベントはありますか?
- 30. '小道具'が変更されたときに 'this'が変更されます
ではなく、公共の静的プロパティを確認します。今は簡単です。 –
静的イベントを使用しているときのメモリリークに注意してください(デフォルトの実装を使用している場合、リスナーオブジェクトは、デタッチしない限りガベージコレクションされません)。 – Nuffin