2017-06-05 144 views
1

我有问题要保持顶部窗口?我用MVVM WPF的工作保持窗口顶部WPF

我有这样的代码在ConfigRole型号:

if (!System.Windows.Application.Current.Windows.OfType<ConfigRole>().Any()) 
{     
    ConfigRoleModel configRoleModel = new ConfigRoleModel(); 
    ConfigRole winconfigRole = new ConfigRole(); 
    winconfigRole.DataContext = configRoleModel; 
    winconfigRole.Show(); 
    winconfigRole.Topmost = true; 
    winconfigRole.Focus(); 
} 

这里的新窗口是正确的,它是在上面,

但在那之后,我想告诉其他窗口从ConfigRoleModel, TOP这是代码ConfigRoleModel:

if (!System.Windows.Application.Current.Windows.OfType<ButtonListView>().Any()) 
{     
    ButtonListViewModel buttonListViewModel = new ButtonListViewModel(); 
    ButtonListView winconfigRole = new ButtonListView(); 
    winconfigRole.DataContext = buttonListViewModel; 

    winconfigRole.Show(); 
    winconfigRole.Topmost = true; 
    winconfigRole.Focus(); 
} 

所以,在这里我没有在最前此新窗口! 我不明白!这是相同的代码,如第一..

我尝试也winconfigRole.ShowDialog(); 和`Window.activate()

而且同样的问题!

我该如何解决?

感谢

+0

设置所有者以configRoleModel – adPartage

+0

那是正确的答案,非常感谢 – devtunis

回答

2

设置Owner财产ConfigRoleMainWindow(或任何窗口你打开它)和ButtonListViewOwner属性为ConfigRole窗口:

if (!System.Windows.Application.Current.Windows.OfType<ButtonListView>().Any()) 
{ 
    ButtonListViewModel buttonListViewModel = new ButtonListViewModel(); 
    ButtonListView winconfigRole = new ButtonListView(); 
    winconfigRole.DataContext = buttonListViewModel; 
    winconfigRole.Owner = System.Windows.Application.Current.Windows.OfType<ConfigRole>().FirstOrDefault(); //<-- 
    winconfigRole.Show(); 
    winconfigRole.Topmost = true; 
    winconfigRole.Focus(); 
} 
+0

它的工作原理, 非常感谢! – devtunis