跳到主要内容
版本:11.0.0

ContentControl 内容控件

常用属性

属性描述
Content控件中显示的内容

参考文献

ContentControl

源代码

ContentControl.cs

显示内容

最简单的情况下,内容控件显示分配给其 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>
学生的名和姓

有关更多信息,请查看数据模板部分。