2016-11-17 24 views
0

私は複数の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; 
    } 
} 
+1

なぜインスタンス変数を作成したくないですか?静的とはインスタンスに何の関係もないことを意味します。あなたの静的プロパティはあなたのインスタンスに全く関係していませんか?そうであれば、設定は静的であることによってデザインに欠陥があります –

+0

静的プロパティを使用しないでください。メインのViewModelはありますか? – Bigeyes

+0

@EmrahSüngüインスタンス変数を作成すると、すでに設定されているので、現在のデータを見逃してしまいます。そのインスタンスを参照する方法があれば、私は自分が望むものを得ることができます。 – GET1NE

答えて

0

ParentVMはChildVM性 ParentViewはChildVMへののDataContextを設定し、ChildViewを作成、結果として得られるのPropertyChangedイベントを処理介して露光、ChildVMを作成します。

here for details.

またはuse MVVM Light Toolkit's Messaging Services to pass values to view Models.を参照してください。しかし、私はそれが好きではありません。

+0

ありがとう、私は後で、特にこれを使用して終わったhttp://stackoverflow.com/questions/13795596/how-to-use-mvvmlight-simpleioc – GET1NE

関連する問題