我有一个要在其中显示基于数据模板的动态内容的窗口.
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表示形式.
解决方法:
您有机会在数据模板中定义一个x:Key.如果是这样,将导致内容演示者不使用数据模板.这是我最近遇到的一个问题.