如何在更改DependencyProperty之后调用方法

时间:2012-04-16 06:26:20

标签: c# wpf mvvm custom-controls dependency-properties

我使用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属性,因为这不是静态的。它有一个构建错误。

纠正我的解决方案吗?如果我做的正确吗?

1 个答案:

答案 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。)