这是XAML
代码,用于打开弹出窗口IsChecked btnViewDetail,我需要在弹出窗口的一侧单击以关闭弹出窗口。
<Popup IsOpen="{Binding IsChecked, ElementName=btnViewDetail}" PopupAnimation="Fade" Width="300" Height="225" PlacementTarget="{Binding ElementName=svTotalStock}" Placement="Top" StaysOpen="False">
<Grid Background="Black">
<TextBlock TextWrapping="Wrap" Text="Raw Materials details"
VerticalAlignment="Top" Height="25" FontFamily="Segoe UI Semibold"
Padding="7,6,0,0" FontWeight="Bold" FontSize="14" Foreground="White"
Margin="0,2,59,0"/>
<Border BorderThickness="1" BorderBrush="Black"/>
</Grid>
</Popup>
<Grid>
<Grid.ContextMenu>
<ContextMenu>
<MenuItem IsCheckable="True" Name="btnViewDetail" Header="View Details"/>
</ContextMenu>
</Grid.ContextMenu>
</Grid>
5条答案
按热度按时间olmpazwi1#
属性执行此工作。
drkbr07n2#
如果
StaysOpen
属性无法处理您情况,则必须在容器元素(在您的情况下为Grid
)具有Focusable="True"
时捕获Windows上的MouseDown
事件qyzbxkaa3#
您必须指定两个属性:
StaysOpen = false
,当StaysOpen属性设置为true时,Popup将保持打开状态,直到通过将IsOpen属性设置为false将其显式关闭为止.当StaysOpen为false时,Popup控件将截获所有鼠标与键盘事件,以确定这些事件之一何时在Popup控件外部发生.
接下来,设置弹出窗口的子项:
Focusable = false
然后,在您希望打开弹出窗口的其他用户控件中,在
UIElement.LostMouseCapture
上定义一个EventTrigger,以设置弹出窗口的IsOpen = true;
66bbxpm54#
我怀疑是从弹出窗口打开的控件。我甚至有同样的问题,并通过打开目标的MouseLeftButtonUp弹出窗口重新喜欢。
uz75evzq5#
添加一个togglebutton,将popup的IsOpen属性绑定到toggleButton的IsChecked属性,如下图所示: