WPF ContentControl无法从ViewModel(Catel)解析正确的视图

时间:2013-12-06 10:11:34

标签: c# wpf mvvm catel

我有一个带有RibbonWindow的WPF项目作为MainWindow,我正在使用Catel。

/查看/主窗口:

public partial class MainWindow : MainWindowBase
{
    public MainWindow()
    {
        InitializeComponent();
    }
}

此MainWindow派生自MainWindowBase。 MainWindowBase派生自RibbonWindow并实现IDataWindow,如Catel文档中所述。

public class MainWindowBase : RibbonWindow, IDataWindow
{
    private readonly WindowLogic _logic;
    //...
}

MainWindow由StartupUri =“/ Views / MainWindow.xaml”实例化,正确的MainWindowViewModel被解析并实例化。

在MainWindow中,我有一个内容控件绑定到MainWindowViewModel中的Property CurrentViewModel

<ContentControl DockPanel.Dock="Bottom" Content="{Binding Path=CurrentViewModel}"></ContentControl>

/的ViewModels / MainWindowViewModel:

public class MainWindowViewModel : ViewModelBase
{
//..
    public static readonly PropertyData CurrentViewModelProperty = RegisterProperty("CurrentViewModel", typeof(ViewModelBase), null);

    public ViewModelBase CurrentViewModel
    {
        get { return GetValue<ViewModelBase>(CurrentViewModelProperty); }
        set { SetValue(CurrentViewModelProperty, value); }
    }
//..
}

此属性设置为AddressViewModel,它也派生自ViewModelBase

/的ViewModels / AddressViewModel:

public class AddressViewModel : ViewModelBase
{
}

我有一个从Catel.Windows.Controls.UserControl派生的AddressView: /查看/ AddressView:

public partial class AddressView : Catel.Windows.Controls.UserControl
{
    public AddressView()
    {
        InitializeComponent();
    }
}

问题是关联的AddressView没有解析,内容控件只显示了AddressViewModel的名称。

我也向App.xaml添加了一个DataTemplate,如下所示,没有效果。

<DataTemplate DataType="x:Type vm:AddressViewModel">
    <view:AddressView />
</DataTemplate>

我错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

看来你基本上忘记了表达式中的括号。应该是这样的:

<DataTemplate DataType="{x:Type vm:AddressViewModel}">