私は複数のViewModelを持っており、それらのすべてで抽象クラスとしてViewModelBaseを使用しています。私は別のクラスのあるクラスから現在のプロパティ値を取得したい。インスタンスを作成することは望ましくないので、プロパティを静的にすれば、私が望むものが得られます。しかし、これを行うことで、Set()は非静的メソッドであるため、ViewModelBase.Set()で使用するINotifyPropertyChange Imを失います。WPFで非静的メソッドを呼び出す静的プロパティ
私はプロパティ値を得ることができますが、まだMVVMにViewModelBaseの利点を保つことはできますか?
public class SampleViewModel : ViewModelBase
{
private static bool _sample;
public SampleViewModel()
{
}
public static bool GetValue
{
get { return _sample; }
set { Set(ref _sample, value); }
}
}
public class MyClassViewModel : ViewModelBase
{
public MyClassViewModel()
{
bool myValue = SampleViewModel.GetValue;
}
}
なぜインスタンス変数を作成したくないですか?静的とはインスタンスに何の関係もないことを意味します。あなたの静的プロパティはあなたのインスタンスに全く関係していませんか?そうであれば、設定は静的であることによってデザインに欠陥があります –
静的プロパティを使用しないでください。メインのViewModelはありますか? – Bigeyes
@EmrahSüngüインスタンス変数を作成すると、すでに設定されているので、現在のデータを見逃してしまいます。そのインスタンスを参照する方法があれば、私は自分が望むものを得ることができます。 – GET1NE