当按钮放在弹出窗口中时,第一次点击不会触发按钮点击事件。

3

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

我遇到的问题是:

  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>

@mm8 我的问题是,我需要在日期选择后处理一些按钮点击功能,但只有在第二次点击按钮时才成功。 - Magesh Maggi
1个回答

3

日历控件(Calendar)处理SelectedDatesChanged事件并调用Mouse.Capture(null)

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

我的主要问题是控件使用了 Mouse_Down(而不是 click)来显示。因此,我必须再次单击才能将鼠标置于 up 状态。如果改用 Mouse_Up,则可以解决这个问题。 - Jeroen van Langen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接