我有一个窗口,我想在其中显示基于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表示。
答案 0 :(得分:4)
您有任何机会在数据模板中定义x:Key。如果是这样,将导致内容演示者不使用datatemplate。这是我最近遇到的一个问题。
答案 1 :(得分:-1)
尝试使用ContentControl.ContentTemplate设置要用于Content的DataTemplate。查看解释here