如何在WPF中通过XAML将窗口的所有者设置为MainWindow?

Myk*_*ych 1 c# wpf xaml owner

如何通过 XAML 设置窗口的所有者Application.Current.MainWindow?到目前为止我已经尝试过这个:

<Window x:Class="ModalWindow.CustomModalWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Owner="System.Windows.Application.Current.MainWindow">
<!--Some XAML code-->
</Window>
Run Code Online (Sandbox Code Playgroud)

那行不通。

ASh*_*ASh 5

Owner="System.Windows.Application.Current.MainWindow"不起作用,因为“System.Windows.Application.Current.MainWindow”只是一个字符串

Window.Owner不是依赖属性,因此绑定到静态源 ( "{Binding Path=MainWindow, Source={x:Static Application.Current}}") 也不起作用

App这样修改类:

namespace WpfDemos
{
    public partial class App : Application
    {
        public static Window CurrentMainWindow
        {
            get { return Current.MainWindow; }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的窗口中通过{x:Static}扩展引用该属性:

<Window x:Class="WpfDemos.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wpfDemos="clr-namespace:WpfDemos"
        Owner="{x:Static wpfDemos:App.CurrentMainWindow}"
Run Code Online (Sandbox Code Playgroud)

所以这是可能的,但为什么呢?