在XAML中,能否将DataTemplate与嵌套类关联?
我正在开发一个MVVM应用程序,遇到了数据模板的问题。我有一个视图模型为项控件提供其他视图模型的集合。这些项是层次结构的一部分,定义为外部视图模型中的嵌套类。到目前为止,我无法在XAML中创建映射以引用内部嵌套类。
以下是类层次结构(为简洁起见进行了简化):
public class MainViewModel
{
public class A
{
}
public class B : A
{
}
public class C : A
{
}
public ObservableCollection<A> Items
{
get;
set;
}
}
在XAML中,我正在尝试将DataTemplate映射到B和C类型,但我无法完全限定嵌套类名。
<ItemsControl ItemsSource="{Binding Path=Items}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type ns:BracingViewModel.B}">
<Grid>
....
</Grid>
</DataTemplate>
<DataTemplate DataType="{x:Type ns:BracingViewModel.C}">
<Grid>
....
</Grid>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
问题:嵌套类的引用在XAML中显示为构建错误。我收到以下错误信息:
Error 5 Cannot find the type 'ns:B'. Note that type names are case sensitive. Line...
Error 5 Cannot find the type 'ns:C'. Note that type names are case sensitive. Line...
如果我将A、B、C类的层次结构移动到MainViewModel类外部(即到命名空间级别),那么这样就可以正常工作。一般来说,我会尝试将与视图模型相关的类定义为嵌套类,但这会导致这个问题。
所以,我的问题是:是否可能将DataTemplate与嵌套类关联起来?如果可能,XAML部分该如何做呢?
提前感谢... Joe