How to set window's owner to MainWindow through XAML in WPF?
Как я могу установить владельца окна на Application.Current.MainWindow
через XAML? Пока я пробовал это:
<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>
Это не сработало.
1 ответ
Решение
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; }
}
}
}
а затем в моем окне ссылается на это свойство через {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}"
так можно, но почему?