0

DatePicker コントロールの使用方法によっては、予期しない動作をするコードがいくつかあります。マウスで日付を選択して DatePicker を使用すると、イベントが 1 回発生し、コードは正しく動作します。ただし、日付を入力すると、イベントが 2 回トリガーされます。これが私のxamlコードです。

<DatePicker Margin="0,-1,0,0" Height="23" VerticalAlignment="Top"    HorizontalAlignment="Right" Width="190" SelectedDate="{Binding DaDate}">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectedDateChanged">
            <i:InvokeCommandAction Command="{Binding SelectedDaDateChangedCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</DatePicker>

そしてC#ビット。

public ICommand SelectedDaDateChangedCommand { get; set; }
private DateTime? daDate;
public DateTime? DaDate
{
    get { return daDate; }
    set
    {
        daDate = value;
        NotifyOfPropertyChange(() => DaDate);
    }
}

public MisoConstraintsViewModel(IView v) : base(v)
{
    //This is where DoStuff() gets called twice from the SelectedDateChanged
    SelectedDaDateChangedCommand = new RelayCommand(p => DoStuff());
}

どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

0

私が正しければ、DaDateプロパティは 2 回続けて設定されます。以前の値を確認することをお勧めします

public DateTime? DaDate
{
 get { return daDate; }
 set
 {
    if(value != daDate)
    {
     daDate = value;
     NotifyOfPropertyChange(() => DaDate);
    }
 }
}

これは原因の特定には役立ちませんが、問題を解決できる可能性があります

于 2013-10-12T00:02:19.380 に答える