gpt4 book ai didi

wpf - 为什么 Wpf Popup.IsOpen=true 从 ListBox 保持打开状态?

转载 作者:行者123 更新时间:2023-12-03 17:49:12 24 4
gpt4 key购买 nike

我有一个带有按钮和列表框的窗口。

  <Window x:Class="ListBoxFail.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="350" Width="525">
<Grid>
<Popup Name="Popup" StaysOpen="False">
<Rectangle Fill="Blue" Width="100" Height="100"/>
</Popup>
<Button Content="ClickMe" Click="OpenPopup" VerticalAlignment="Top"/>
<ListBox SelectionChanged="OpenPopup" VerticalAlignment="Bottom">
<ListBoxItem Content="One"/>
<ListBoxItem Content="Two"/>
</ListBox>
</Grid>
</Window>

Button 和 ListBox 都会触发一个 Popup 打开:
  namespace ListBoxFail {
partial class MainWindow {
public MainWindow() { InitializeComponent(); }
private void OpenPopup(object a, object b) { Popup.IsOpen = true; }
}
}

当您单击按钮时,弹出窗口将打开。单击其他任何地方然后按预期关闭弹出窗口。

当您单击 ListBox 时,弹出窗口将打开。但是,此时关闭弹出窗口的唯一方法是让主窗口失去焦点。在窗口周围单击或单击按钮不会关闭弹出窗口。

是什么赋予了?为什么 ListBox 忽略了 StaysOpen=false 指令? 我究竟做错了什么?

最佳答案

你本身并没有做错任何事。 ListBox 及其焦点事件可能有点“不确定”。我建议研究焦点事件如何在 ListBox 上工作,但可能值得考虑以下几点:

<ListView.ItemContainerStyle>
<Style TargetType="ContentControl">
<Setter Property="Focusable" Value="False"/>
</Style>
</ListView.ItemContainerStyle>

这可能值得研究,但是如果它似乎没有帮助或解决您的问题,请告诉我,我们可以仔细研究该问题。

关于wpf - 为什么 Wpf Popup.IsOpen=true 从 ListBox 保持打开状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25315116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com