静态 属性 在 WPF 中调用非静态方法
Static Property calling non-static method in WPF
我有多个 ViewModel,并且在所有视图模型中都使用 ViewModelBase 作为抽象 class。我想从另一个 class 中获取当前 属性 值。创建一个实例是不可取的,使 属性 静态得到我想要的。但是,通过这样做,我失去了使用 ViewModelBase.Set() 的 INotifyPropertyChange Im,因为 Set() 是一种非静态方法。
我可以获得 属性 值的替代方法是什么,但仍保留 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;
}
}
ParentVM 创建一个 ChildVM,通过 ChildVM 公开它 属性
ParentView 处理生成的 PropertyChanged 事件,创建一个 ChildView,将其 DataContext 设置为 ChildVM。
见here for details.
或use MVVM Light Toolkit's Messaging Services to pass values to view Models.。但是我不喜欢。
我有多个 ViewModel,并且在所有视图模型中都使用 ViewModelBase 作为抽象 class。我想从另一个 class 中获取当前 属性 值。创建一个实例是不可取的,使 属性 静态得到我想要的。但是,通过这样做,我失去了使用 ViewModelBase.Set() 的 INotifyPropertyChange Im,因为 Set() 是一种非静态方法。
我可以获得 属性 值的替代方法是什么,但仍保留 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;
}
}
ParentVM 创建一个 ChildVM,通过 ChildVM 公开它 属性 ParentView 处理生成的 PropertyChanged 事件,创建一个 ChildView,将其 DataContext 设置为 ChildVM。
见here for details.
或use MVVM Light Toolkit's Messaging Services to pass values to view Models.。但是我不喜欢。