Xaml UWP -关闭我的内容对话框点击空白区域

Xaml UWP -关闭我的内容对话框点击空白区域,xaml,uwp,Xaml,Uwp,我已经为我的UWP应用程序创建了一个内容对话框,其中包含一个集中的UI元素和一个周围的空白区域。但是内容对话框没有“IsLightDismissEnabled”这样的属性,在单击UIELEMENT区域以外的区域时关闭对话框。我如何实现它?内容对话框是一个模式对话框。你为什么不使用一个或一个子类呢?它是非模态的,并且已经具有您刚才提到的IsLightDismissEnabled属性。我能想到的选项很少: 使用弹出窗口(如uruk建议的)并在其中添加控件,在所需位置创建弹出窗口(如果您希望根据运行

我已经为我的UWP应用程序创建了一个内容对话框,其中包含一个集中的UI元素和一个周围的空白区域。但是内容对话框没有“IsLightDismissEnabled”这样的属性,在单击UIELEMENT区域以外的区域时关闭对话框。我如何实现它?

内容对话框是一个模式对话框。你为什么不使用一个或一个子类呢?它是非模态的,并且已经具有您刚才提到的IsLightDismissEnabled属性。

我能想到的选项很少:

  • 使用弹出窗口(如uruk建议的)并在其中添加控件,在所需位置创建弹出窗口(如果您希望根据运行时的用户输入在位置显示弹出窗口,也可以在此处使用绑定弹出窗口具有HorizontalOffset和VerticalOffset属性)
  • 创建占据整个页面但透明的父视图,然后在中间添加UI元素,并将点击/单击事件附加到透明视图。这些事件只会关闭、移除/折叠包含其他元素的透明视图(通过绑定值或将值设置为UI元素)
示例或弹出窗口用法:

<Popup x:Name="MenuPopUp"
       IsLightDismissEnabled="True"
       HorizontalOffset="{Binding HorizontalOffset}"
       VerticalOffset="{Binding VerticalOffset}"
       IsOpen="{Binding IsOpen, Mode=TwoWay}">
    <Grid>
            YOUR ELEMENTS HERE
    </Grid>
</Popup>

你的元素在这里

在CS中
私有void菜单opup_LostFocus(对象发送方,RoutedEventArgs e)
{
MenuPopup.IsOpen=false;
}

在“内容背后的代码”对话框中:

public sealed partial class CustomDialog : ContentDialog
{
    public CustomDialog()
    {
        this.InitializeComponent();

        Boolean isHide;

        Window.Current.CoreWindow.PointerPressed += (s, e) =>
        {
            if (isHide)
                Hide();
        };

        PointerExited += (s, e) => isHide = true;
        PointerEntered += (s, e) => isHide = false;
    }
}

这应该被标记为答案。其他答复没有回答这个问题。
public sealed partial class CustomDialog : ContentDialog
{
    public CustomDialog()
    {
        this.InitializeComponent();

        Boolean isHide;

        Window.Current.CoreWindow.PointerPressed += (s, e) =>
        {
            if (isHide)
                Hide();
        };

        PointerExited += (s, e) => isHide = true;
        PointerEntered += (s, e) => isHide = false;
    }
}