3

ここには非常に単純なシナリオがあります。レイアウトを見てください:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <TextBox Grid.Row="0"></TextBox>
    <DatePicker Grid.Row="1" 
                Name="_datePicker"
                LostFocus="_datePicker_OnLostFocus"></DatePicker>
</Grid>

および分離コード:

private void _datePicker_OnLostFocus(object sender, RoutedEventArgs e)
{
    Debug.WriteLine("LostFocuse");
}

そのため、問題は、日付を選択してクリックするTextBoxと、イベントLostFocusが 7 ( 7! ) 回発生することです。1 つは、DatePicker調子に乗って本当に集中力を失ったときでTextBox、残りの 6 回は完全に説明できません。

どうすれば修正できますか?このイベントを1 回だけ起動する必要があります。それとも、他のイベントを使用できますか?LostKeyBoardFocus私は同じ結果で 試しました。

4

3 に答える 3

1

初めてチェックする bool 値を追加してから、e.Handled を true に設定できます。

bool isFired = false;

private void _datePicker_OnLostFocus(object sender, RoutedEventArgs e)
{
    if (!isFired)
        {
            isFired = true;
        }
        e.Handled = true;

}
于 2014-08-06T12:33:50.370 に答える