0

私はMVVMパターンによるプロジェクトを持っています。また、ユーザーコントロールがあります。このユーザー コントロールには静的な DependencyProperty があります

public partial class RadarView : INotifyPropertyChanged
{


public static DispatcherTimer Timer { get; set; }

        public static readonly DependencyProperty RequestTypeProperty = DependencyProperty.Register("RequestType", typeof(RadarRequestType), typeof(RadarView), new FrameworkPropertyMetadata(new RadarRequestType(), RequestTypeChanged));

        public RadarRequestType RequestType
        {
            get
            {
                return
                    (RadarRequestType)GetValue(RequestTypeProperty);
            }
            set { SetValue(RequestTypeProperty, value); }
        }

        public static void RequestTypeChanged(DependencyObject dobject, DependencyPropertyChangedEventArgs args)
        {
        var radar = (RadarView)dobject;

            if (Timer == null)
                Timer = new DispatcherTimer { Interval = new TimeSpan(0, 0, 1) };

            Timer.Tick += DispatcherTimerTick;

            Timer.Start();

        }

        private static void DispatcherTimerTick(object sender, EventArgs e)
        {
            StartText = DateTime.Now.Second.ToString();

            PropertyChanged(this, new PropertyChangedEventArgs("StartText"));
        }

        public static event PropertyChangedEventHandler PropertyChanged = delegate { };

}

私の問題は DispatcherTimerTick にあります。これは、このイベントのユーザー コントロールと同じであり、静的ではないためです。このビルド エラーのメッセージは次のとおりです: キーワード 'this' は、静的プロパティ、静的メソッド、または静的フィールド初期化子では有効ではありません

実際、(RadarView)dobject を DispatcherTimerTick イベントに送信する必要があります。どうすればいいですか?

4

1 に答える 1

0

私の問題は解決しました。の使い方Timerが間違っていました。する必要がありましたradar.Timer

于 2012-05-13T09:40:07.733 に答える