C# 弹出窗口的几个问题(不隐藏)
我做了一个小的测试应用程序来说明我不理解的行为:2个按钮,如果鼠标进入左键,弹出窗口显示(工作),如果鼠标进入右键,弹出窗口应该立即消失(不工作)。在我的实际应用程序中,我没有按钮,只是在这个简单测试的示例中,所以鼠标移动很重要,不能使用按钮单击 我看到的是以下行为:C# 弹出窗口的几个问题(不隐藏),c#,wpf,C#,Wpf,我做了一个小的测试应用程序来说明我不理解的行为:2个按钮,如果鼠标进入左键,弹出窗口显示(工作),如果鼠标进入右键,弹出窗口应该立即消失(不工作)。在我的实际应用程序中,我没有按钮,只是在这个简单测试的示例中,所以鼠标移动很重要,不能使用按钮单击 我看到的是以下行为: 如果显示弹出窗口,则鼠标右键输入(隐藏)根本没有反应,似乎弹出窗口已获得焦点,我必须在启用鼠标右键输入之前单击主窗口。设置Popup.Focusable=false(XAML)或在设置Popup.Isopen=true之后尝试将
- 如果显示弹出窗口,则鼠标右键输入(隐藏)根本没有反应,似乎弹出窗口已获得焦点,我必须在启用鼠标右键输入之前单击主窗口。设置Popup.Focusable=false(XAML)或在设置Popup.Isopen=true之后尝试将焦点赋予网格(C#代码)没有帮助
- 一旦我试图通过设置popup.IsOpen=false来隐藏弹出窗口,弹出窗口将保持可见且不会消失。只有当我单击主窗口顶栏时,或者当我悬停最小化按钮(例如,显示工具提示)时,弹出窗口才会突然消失。对多个UI元素调用UpdateLayout()没有帮助
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
x:Name="MyWindow"
Title="MainWindow" Height="500" Width="800">
<Grid>
<Grid x:Name="MyGrid" Margin="100" Background="Green">
<TextBox x:Name="MyText" Width="100" Height="50" Margin="0,50" HorizontalAlignment="Center"></TextBox>
<Button Width="75" Height="50" Margin="20,100" HorizontalAlignment="Left"
Content="Show" MouseEnter="MouseEnterShow"></Button>
<Button Width="75" Height="50" Margin="20,100" HorizontalAlignment="Right"
Content="Hide" MouseEnter="MouseEnterHide"></Button>
<Popup x:Name="MyPopup" PlacementTarget="{Binding ElementName=MyGrid}" Placement="RelativePoint"
AllowsTransparency="false" IsOpen="False" StaysOpen="False"
Focusable="False"
Width="200" Height="200"
HorizontalAlignment="Left" VerticalAlignment="Top"
HorizontalOffset="-50" VerticalOffset="-50">
<Grid>
<Canvas Background="BlanchedAlmond" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></Canvas>
</Grid>
</Popup>
</Grid>
</Grid>
</Window>
经过一些野蛮的强迫,我终于成功了: 1.将弹出属性StaysOpen设置为true,而不是false 2.代码隐藏
private void MouseEnterShow(object sender, MouseEventArgs e)
{
MyPopup.IsOpen = true;
}
private void MouseEnterHide(object sender, MouseEventArgs e)
{
MyPopup.IsOpen = false;
}
经过一些野蛮的强迫,我终于成功了: 1.将弹出属性StaysOpen设置为true,而不是false 2.代码隐藏
private void MouseEnterShow(object sender, MouseEventArgs e)
{
MyPopup.IsOpen = true;
}
private void MouseEnterHide(object sender, MouseEventArgs e)
{
MyPopup.IsOpen = false;
}
这是向前迈出的一步,谢谢。当弹出窗口显示时,在隐藏按钮上输入鼠标确实会做出响应,但由于某种原因,在“popup.IsOpen=false”之后,弹出窗口仍然可见,直到我单击主窗口顶部栏或将鼠标悬停在最小化按钮上。奇怪的是,一旦我设置了“AllowTransparency=”true“,现在似乎可以工作了。但我不明白这背后的理由…这是向前迈出的一步,谢谢。当弹出窗口显示时,在隐藏按钮上输入鼠标确实会做出响应,但由于某种原因,在“popup.IsOpen=false”之后,弹出窗口仍然可见,直到我单击主窗口顶部栏或将鼠标悬停在最小化按钮上。奇怪的是,一旦我设置了“AllowTransparency=”true“,现在似乎可以工作了。但我不明白这背后的理由。。。