Popup不会关闭设置为False的事件Staylopen
本文关键字:False 事件 Staylopen 设置 Popup | 更新日期: 2023-09-27 18:21:31
我使用以下代码片段来定义Popup。
代码段[XAML]:
<Grid Margin="0,0,0,0" Height="40">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="19" />
<ColumnDefinition Width="19" />
</Grid.ColumnDefinitions>
<TextBlock HorizontalAlignment="Stretch"
Text="HeaderText"
FontWeight="Bold"
TextTrimming="CharacterEllipsis"
VerticalAlignment="Center"/>
<Grid Grid.Column="1">
<Button Width="19" x:Name="FilterButton" Click="FilterButton_OnClick" Content="^"/>
<Popup x:Name="FilterPanel" StaysOpen="False" >
<Border >
<Grid>
<TextBlock x:Name="tblTitle" Text="PopUp Header" Background="Red" Grid.Column="0" Grid.Row="0"/>
</Grid>
</Border>
</Popup>
</Grid>
<TextBox Text="Test" Grid.Column="2"/>
</Grid>
我已经使用以下代码片段打开弹出
代码段[C#]:
private void FilterButton_OnClick(object sender, RoutedEventArgs e)
{
this.FilterPanel.IsOpen = true;
}
Scenorio:
点击按钮打开弹出窗口。
按下选项卡
焦点移到文本框。
实际行为:
弹出窗口不会关闭。
预期行为:
弹出窗口应该关闭。
为了供您参考,我附上了一个简单的样本。你能对此进行调查并提供指导来归档我的需求吗。提前谢谢。
这很奇怪。我把你的代码粘贴到一个新的项目窗口中,每次都会关闭弹出窗口。然而,我记得当我想创建自己的自定义控件时,我遇到了类似的问题。我知道其中一件事就是将StaysOpen设置为false。我看你已经做到了。另一个是尝试在FilterPanel初始化时设置以下内容
FilterPanel.IsMouseCaptureWithinChanged +=FilterPanel_IsMouseCaptureWithinChanged;
void FilterPanel_IsMouseCaptureWithinChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (!(bool)e.NewValue)
{ FilterPanel.IsOpen = false; }
}
正如我所说,当我复制你的代码时,我的代码运行得很好,所以我不能测试它,但以上应该可以。