我使用WPF
模式的MVVM
应用程序。我的项目中有一个Window,在我的Window中使用CustomControl
。
我的CustomControl
中的“启动和停止窗口”中需要两个命令。所以我使用这样的bool DependencyProperty
:
public static readonly DependencyProperty IsStartModeProperty = DependencyProperty.Register(
"IsStartMode", typeof(bool), typeof(RadarView), new FrameworkPropertyMetadata(false, OnCurrentReadingChanged));
public bool IsStartMode {
get { return (bool)GetValue(IsStartModeProperty); }
set { SetValue(IsStartModeProperty, value); }
}
以下方法也用于我的依赖项属性中的回调委托:
public static void OnCurrentReadingChanged(DependencyObject doj, DependencyPropertyChangedEventArgs dp) {
if (IsStartMode)
Start();
else
Stop();
}
我的问题是在up方法中使用IsStartMode
属性,因为这不是静态的。它有一个构建错误。
纠正我的解决方案吗?如果我做的正确吗?
答案 0 :(得分:4)
您需要将第一个方法参数强制转换为Dependency Object类:
public static void OnCurrentReadingChanged(DependencyObject doj, DependencyPropertyChangedEventArgs dp)
{
var myObject = (RadarView)doj;
if (myObject.IsStartMode)
myObject.Start();
else
myObject.Stop();
}
(作为旁注,我会将财产称为IsRunning
。)