c# - 当放置在弹出窗口中时,第一次单击不会触发按钮单击事件

标签 c# wpf popup window wpf-controls

我在弹出控件中放置了一个日历控件和一个按钮控件。

我遇到的问题:

  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>

最佳答案

处理 CalendarSelectedDatesChanged 事件并调用 Mouse.Capture(null):

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

关于c# - 当放置在弹出窗口中时,第一次单击不会触发按钮单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60846240/

相关文章:

wpf - 弹出窗口永不关闭

javascript - 测试时弹出消息框

c# - CustomError页面中的错误信息

c# - 什么情况下等待取消的任务会抛出TaskCanceledException?

c# - 如何修改请求的http头; C# 中的 Web 引用

c# - 在 C++ 中使用 C# 代码的可能方法有哪些

c# - 内存泄漏 - 使用 MemoryStream 从尼康相机捕获实时视频

wpf - 当 SelectedItem 绑定(bind)到列表中不存在的内容时,取消选择所有项目

wpf - 文件夹同步

android - listview android中的按钮位置