试图了解MVVM,并获得一个简单的窗口,通过数据模板将其视图模型呈现为视图。
在App.xaml中:
<Application.Resources>
<DataTemplate DataType="{x:Type vm:TestViewModel}">
<vw:TestView />
</DataTemplate>
</Application.Resources>
查看定义:
<UserControl x:Class="MyNamespace.TestView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<TextBlock>TESTING</TextBlock>
</Grid>
</UserControl>
在MainWindowViewModel中:
private void onOpenTestView(object sender)
{
Window w = new Window();
w.Content = new TestViewModel();
w.Show();
}
运行应用程序会产生一个带有“MyNamespace.TestViewModel”字符串的窗口,而不是“TESTING”,这将导致我的数据模板无法找到。
我对这一切都很陌生,所以我错过了一些明显的东西吗?我不认为这是一个字符串匹配问题,因为如果我故意拼错XAML中的视图或模型,那么它就不会编译。
我的新窗口是否可以访问我的应用资源(以及我的datatemplate)?
干杯, 杰里米
编辑:已修复(无法回答8小时)
由于MS Bug,除非至少设置了一种样式,否则不会读取资源。
答案 0 :(得分:0)
由于MS Bug,除非至少设置了一种样式,否则不会读取资源。