当放置在弹出窗口中时,第一次单击不会触发按钮单击事件
Button click event is not fired on first click when place inside popup
我在弹出控件中放置了一个日历控件和一个按钮控件。
我面临的问题:
- 通过单击切换按钮打开弹出控件。
- 打开弹出控件后,我尝试select鼠标单击日历中的日期,现在日历获得焦点。
- 现在我尝试单击弹出窗口中的按钮,但按钮单击事件仅在第二次单击时触发。
问题是在第一次点击时弹出窗口获得焦点,只有在第二次点击时事件触发。
代码
<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>
处理 Calendar
的 SelectedDatesChanged
事件并调用 Mouse.Capture(null)
:
private void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
{
Mouse.Capture(null);
}
我在弹出控件中放置了一个日历控件和一个按钮控件。
我面临的问题:
- 通过单击切换按钮打开弹出控件。
- 打开弹出控件后,我尝试select鼠标单击日历中的日期,现在日历获得焦点。
- 现在我尝试单击弹出窗口中的按钮,但按钮单击事件仅在第二次单击时触发。
问题是在第一次点击时弹出窗口获得焦点,只有在第二次点击时事件触发。
代码
<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>
处理 Calendar
的 SelectedDatesChanged
事件并调用 Mouse.Capture(null)
:
private void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
{
Mouse.Capture(null);
}