Mos*_*ady 2 xaml windows-10 uwp uwp-xaml
有没有办法使ContentDialog轻松解雇?所以当用户点击ContentDialog之外的任何东西时,它应该被关闭.
谢谢.
默认情况下,ContentDialog放在PopupRoot中.在它背后,有一个矩形,暗淡并阻止与应用程序中的其他元素的交互.您可以在VisualTreeHelper的帮助下找到它并向其注册一个Tapped事件,因此当点击它时,您可以隐藏ContentDialog.
您可以在ContentDialog代码之外调用ShowAsync之后执行此操作,也可以在ContentDialog代码中执行此操作.就个人而言,我实现了一个派生自ContentElement的类,我重写OnApplyTemplate,如下所示:
protected override void OnApplyTemplate()
{
// this is here by default
base.OnApplyTemplate();
// get all open popups
// normally there are 2 popups, one for your ContentDialog and one for Rectangle
var popups = VisualTreeHelper.GetOpenPopups(Window.Current);
foreach (var popup in popups)
{
if (popup.Child is Rectangle)
{
// I store a refrence to Rectangle to be able to unregester event handler later
_lockRectangle = popup.Child as Rectangle;
_lockRectangle.Tapped += OnLockRectangleTapped;
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在OnLockRectangleTapped中:
private void OnLockRectangleTapped(object sender, TappedRoutedEventArgs e)
{
this.Hide();
_lockRectangle.Tapped -= OnLockRectangleTapped;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |