以下是打开弹出窗口IsChecked btnViewDetail 的XAML
代码,我需要在弹出窗口的点击侧关闭弹出窗口。
<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>
答案 0 :(得分:7)
StaysOpen = false
的属性可以做到这一点。
答案 1 :(得分:6)
如果StaysOpen
属性无法处理您的情况,则当您的容器元素(在您的情况下,MouseDown
)具有Grid
<时,您必须在窗口上捕获Focusable="True"
事件/ p>
private void Window_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
gridContainer.Focus();
}
答案 2 :(得分:2)
您必须分配两个属性:
StaysOpen = false
,
当StaysOpen属性设置为true时,Popup将保持打开状态,直到通过将IsOpen属性设置为false来显式关闭它。当StaysOpen为false时,Popup控件拦截所有鼠标和键盘事件,以确定其中一个事件何时发生在Popup控件之外。
接下来,设置弹出窗口的孩子:Focusable = false
然后在你想要打开弹出窗口的其他用户控件中,在UIElement.LostMouseCapture
上定义一个EventTrigger来设置弹出窗口IsOpen = true;
答案 3 :(得分:0)
我怀疑打开弹出窗口的控件。我什至遇到了同样的问题,并且通过打开目标的MouseLeftButtonUp弹出窗口而感到反感。