Panel内容模型指从System.Windows.Controls.Panel继承的控件,这些控件都是容器,可以在内部承载其他的控件和子容器。Panel内容模型包含的容器有:
Canvas
DockPanel
Grid
TabPanel
ToolBarOverflowPanel
UniformGrid
StackPanel
ToolBarPanel
VirtualizingPanel
VirtualizingStackPanel
WrapPane
对于Panel模型,其包含一个Children属性,表示其所有的子控件和子容器的集合,在XAML代码中可以省略<XXX.Children>标记,如:
<StackPanel x:Name="mainPanel">
<StackPanel x:Name="panelA">
<StackPanel.Children>
<Button>Button A</Button>
</StackPanel.Children>
</StackPanel>
<Button>Button B</Button>
<StackPanel x:Name="panelB">
</StackPanel>
</StackPanel>
也可以通过代码,动态添加Children中的对象
// 定义一个Button
Button btn = new Button();
btn.Content = "Button C";
5: // 将Button添加到StackPanel中
panelB.Children.Add(btn);
Decorator内容模型
Decorator内容模型指的是从System.Windows.Controls.Decorator类继承的控件,主要是对其中的一个子元素的边缘进行修饰。Decorator模型的主要控件包含:
AdornerDecorator
Border
InlineUIContainer
BulletDecorator
ButtonChrome
ClassicBorderDecorator
InkPresenter
ListBoxChrome
SystemDropShadowChrome
Viewbox
Decorator模型包含一个Child属性,表示其包含的一个子元素(注意,只能是一个子元素(控件或容器,在容器中可以再添加其他的控件)),Child属性的XAML标记可以省略。
例如,对于一个TextBox添加一个边框,使用XAML语言定义:
<StackPanel x:Name="mainPanel">
<Border BorderThickness="5" BorderBrush="DarkBlue" Margin="5">
<Border.Child>
<TextBox Text="TextBox Content"/>
</Border.Child>
</Border>
</StackPanel>
也可以使用代码完成上述功能:
// 定义一个Border对象,并设置其边框的大小,颜色,外边距
Border border = new Border();
border.BorderThickness = new Thickness(5);
border.BorderBrush = new SolidColorBrush(Colors.DarkRed);
border.Margin = new Thickness(5);
// 定义一个TextBox对象
TextBox textBox = new TextBox();
textBox.Text = "TextBox Content Text";
// 使用Border修饰TextBox的边框
border.Child = textBox;
// 将Border添加到StackPanel中
mainPanel.Children.Add(border);