Событие нажатия кнопки не срабатывает при первом нажатии, когда место внутри всплывающего окна - PullRequest
5 голосов
/ 25 марта 2020

Я поместил элемент управления календаря и кнопки внутри всплывающего элемента управления.

Проблема, с которой я сталкиваюсь:

  1. Всплывающий элемент управления открывается нажатием кнопки переключения.
  2. После открытия всплывающего элемента управления я попытался выбрать дату в календаре одним щелчком мыши, теперь календарь получает фокус.
  3. Теперь я пытаюсь нажать кнопку во всплывающем окне, но событие нажатия кнопки срабатывает только при втором щелчке.

Проблема заключается в том, что при первом щелчке всплывающее окно получает фокус, и только при втором щелчке событие срабатывает.

Код

<Popup
    x:Name="Popup"
    Grid.Row="1"
    AllowsTransparency="True"
    Focusable="True"
    IsOpen="False"
    Placement="Bottom"
    PlacementTarget="{Binding ElementName=Border}"
    StaysOpen="False">
    <Border>
        <StackPanel>
            <Calendar></Calendar>
            <Button Click="Button_Click"></Button>
        </StackPanel>
    </Border>
</Popup>

1 Ответ

2 голосов
/ 25 марта 2020

Обработка события SelectedDatesChanged для Calendar и вызов Mouse.Capture(null):

private void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
{
    Mouse.Capture(null);
}
...