我有一个带有Button和ListBox的窗口。
<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指令?我做错了什么?
答案 0 :(得分:0)
你本身没有做错任何事。 ListBox及其焦点事件可能有点“不确定”。我建议调查焦点事件如何在ListBox上工作,但是值得考虑以下内容:
<ListView.ItemContainerStyle>
<Style TargetType="ContentControl">
<Setter Property="Focusable" Value="False"/>
</Style>
</ListView.ItemContainerStyle>
这可能值得研究,但如果它似乎没有帮助或解决您的问题,请告诉我,我们可以仔细研究这个问题。