2017-12-28 13 views
0

XAMLを通じてウィンドウの所有者をApplication.Current.MainWindowに設定するにはどうすればよいですか? これまで私はこれを試しました:WPFでウィンドウの所有者を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> 

それは動作しませんでした。 「System.Windows.Application.Current.MainWindow」は単なる文字列

Window.Ownerあるので

+0

なぜWindow.Ownerを設定しますか? 何を達成したいですか? –

答えて

2

Owner="System.Windows.Application.Current.MainWindow"は動作しません依存関係プロパティではありませんので、静的ソース("{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}" 

ですが、なぜですか?

+0

なぜそれがコードに追加できるのか、それほど多くの作業が必要です。私の答えを参照してくださいhttps://stackoverflow.com/a/48004247/2289942 –

+0

私は私のコメントを取り返します... –

+0

私はカスタムモーダルダイアログウィンドウを作成していて、MainWindowにオーナーを設定したいと思っていました。コードの背後にあるのではなく、XAMLでもっと優雅ですが、その場合は 'App.xaml.cs'を変更する必要があるため、単純な解決策はないようです。 –

関連する問題