ContentControl 内容控件
常用属性
属性 | 描述 |
---|---|
Content | 控件中显示的内容 |
参考文献
源代码
显示内容
最简单的情况下,内容控件显示分配给其 Content
属性的数据。
例如:
<ContentControl Content="Hello World!"/>
将显示字符串 "Hello World!"。Content
属性是控件的默认属性,因此上述示例也可以写为:
<ContentControl>Hello World!</ContentControl>
如果你将一个控件分配给内容控件,则它将显示该控件,例如:
<ContentControl>
<Button>Click Me!</Button>
</ContentControl>
使用模板显示内容
到目前为止还算普通。内容控件在与数据绑定和数据模板结合使用时变得有用。通过设置 ContentTemplate
属性,可以指定 Content
属性中的数据如何显示。例如,给 定以下视图模型:
namespace Example
{
public class MainWindowViewModel : ViewModelBase
{
object content = new Student("Jane", "Deer");
public object Content
{
get => content;
set => this.RaiseAndSetIfChanged(ref content, value);
}
}
public class Student
{
public Student(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
public string FirstName { get; }
public string LastName { get; }
}
}
注意:以下示例假设
MainWindowViewModel
的一个实例被分配给窗口的DataContext
。有关更多信息,请参阅关于DataContext
的部分。
我们可以使用 ContentTemplate
属性在内容控件中显示学生的名和姓:
<Window xmlns="https://github.com/avaloniaui">
<ContentControl Content="{Binding Content}">
<ContentControl.ContentTemplate>
<DataTemplate>
<Grid ColumnDefinitions="Auto,Auto" RowDefinitions="Auto,Auto">
<TextBlock Grid.Row="0" Grid.Column="0">First Name:</TextBlock>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding FirstName}"/>
<TextBlock Grid.Row="1" Grid.Column="0">Last Name:</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding LastName}"/>
</Grid>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</Window>
有关更多信息,请查看数据模板部分。