Catel + Orchestra MahApps - Property' Owner'在对象上找不到

时间:2015-06-16 15:39:34

标签: mahapps.metro catel

我正在使用Catel + Orchestra.MahApps来构建我的应用程序。

我试图让自定义Dialog正常工作,而现在我已经卡住了。

我创建了SimpleDataWindow:

<orchestra:SimpleDataWindow x:Class="OrtMan.ViewModule.Photos.Views.NewPhotoWindow"
                            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                            xmlns:catel="http://catel.codeplex.com"
                            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                            xmlns:orchestra="https://github.com/orcomp/orchestra"
                            xmlns:viewModels="clr-namespace:OrtMan.ViewModule.Photos.ViewModels"
                            d:DataContext="{d:DesignInstance viewModels:NewPhotoWindowViewModel}"
                            mc:Ignorable="d">
    <Grid>
        <TextBlock Text="aaa" />
    </Grid>

</orchestra:SimpleDataWindow>

然后我试图从我的ViewModel中显示它:

var uiservice = ServiceLocator.Default.ResolveType<IUIVisualizerService>();
var showDialog = uiservice.ShowDialog<NewPhotoWindowViewModel>();
if (showDialog == true)
{
    ...
}    

结果是: - Catel日志出错:Property 'Owner' is not found on the object 'NewPhotoWindow', probably the wrong field is being mapped - 对话框显示但没有内容 - 它会自动返回true作为dialogResult

我尝试了多种IUIVisualizerService方法:Show / ShowDialog以及async。总是同样的问题。

我做错了吗?

1 个答案:

答案 0 :(得分:0)

如果我没记错的话,MahApps.Metro中的所有对话都是异步的。这意味着您应该使用IUIVisualizerService的异步方法来显示对话框。