如何在框架页面上方使用Metrowindow的属性

时间:2015-03-01 13:00:32

标签: c# wpf mahapps.metro

使用Mahapps.metro,并遇到问题。

我想分页分页内容,全部通过地铁窗口内的框架进行控制。

有两件事我无法弄明白怎么做,这很简单,同时在没有页面的情况下在一个窗口内工作。

首先,我想使用他们的对话框。以下行直接在窗口中使用时工作:

await this.ShowMessageAsync("This is the title", "User Setting: " + x);

但是,它现在会出现以下错误:

  

实例参数:无法从'GameWindow.MainMenu'转换为'MahApps.Metro.Controls.MetroWindow'

我尝试过寻找答案,以及尝试

之类的事情
await this.Parent.ShowMessageAsync("This is the title", "User Setting: " + x);

但都无济于事。

其次,我在我的窗口中配置了一个弹出按钮,我还需要从框架内的页面进行访问。我不能为我的生活想出这一个......

1 个答案:

答案 0 :(得分:4)

您必须走可视树以找到MetroWindow实例,例如

using MahApps.Metro.Controls;
using MahApps.Metro.Controls.Dialogs;

await this.TryFindParent<MetroWindow>()
    .ShowMessageAsync("This is the title", "User Setting: " + x);

TryFindParent<>MahApps.Metro.Controls.TreeHelper中定义的扩展方法,ShowMessageAsync<>中定义了MahApps.Metro.Controls.Dialogs.DialogManager。如果您不想使用扩展方法,请尝试以下代码:

var window = TreeHelper.TryFindParent<MetroWindow>(this);
await DialogManager.ShowMessageAsync(window, "This is the title", "User Setting: " + x);