DataTemplate未应用

时间:2013-05-20 21:13:07

标签: c# wpf xaml mvvm datatemplate

我有一个窗口,我想在其中显示基于datatemplate的动态内容。

XAML看起来大致如下:

<Window x:Class="Report.ControlLibrary.ReportHost"
         xmlns:reports="clr-namespace:Report.ControlLibrary.Reports"
\>
<Window.Resources>
    <DataTemplate x:Key="ReportTemplate" DataType="{x:Type reports:ReportViewModel}">
        <!-- Markup for DataTemplate goes here -->         
    </DataTemplate>
</Window.Resources>   
<ContentControl Content="{Binding}">

</ContentControl>
</Window>

DataContext的设置方式为:

var vm = new ReportViewModel();
var report = new ReportHost() { DataContext=vm };          
report.Show();

似乎Window上的DataContext设置正确但找不到DataTemplate,因为窗口只包含ViewModel的ToString表示。

2 个答案:

答案 0 :(得分:4)

您有任何机会在数据模板中定义x:Key。如果是这样,将导致内容演示者不使用datatemplate。这是我最近遇到的一个问题。

答案 1 :(得分:-1)

尝试使用ContentControl.ContentTemplate设置要用于Content的DataTemplate。查看解释here