数据模板(Data Templates)
在Avalonia UI中,数据模板不会存储在应用程序资源中。(样式也是如此,请参见这里。)
相反,数据模板要么放置在控件的DataTemplates
集合内,要么放置在Application
上:
例如,以下代码添加了一个数据模板来显示视图模型类MyViewModel
:
<UserControl xmlns:viewmodels="using:MyApp.ViewModels"
x:DataType="viewmodels:ControlViewModel">
<UserControl.DataTemplates>
<DataTemplate DataType="viewmodels:FooViewModel">
<Border Background="Red" CornerRadius="8">
<TextBox Text="{Binding Name}"/>
</Border>
</DataTemplate>
</UserControl.DataTemplates>
<!-- 假设ControlViewModel.Foo是MyApp.ViewModels.FooViewModel类型的对象,
则此处将显示一个具有圆角半径为8的红色边框,其中包含一个TextBox。
只有在使用编译绑定时才需要DataType,因此可以对其类型检查。 -->
<ContentControl Content="{Binding Foo}"/>
<UserControl>