WPF 自定义控件显示内容
WPF Custom Control Display the Content
我正在 WPF 中创建一个自定义控件,我希望能够显示我放入其中的任何内容。
一个很好的例子是 Grid
、StackPanel
、DockPanel
您可以在哪里做类似的事情:
<StackPanel>
<TextBox />
<Button/>
</StackPanel>
并且 StackPanel 知道 TextBox
并且 Button
显示它们并做出相应的反应。
问题:
如何显示我放在控件中的内容?
我希望能够做类似的事情:
<controls:MyControl>
<Grid>
<TextBox />
<Button />
</Grid>
</controls:MyControl>
更新
后面的代码看起来像:
public class MyControl:ContentControl
{
static MyControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl),
new FrameworkPropertyMetadata(typeof(MyControl)));
}
}
<Style TargetType="{x:Type local:MyControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="1" BorderBrush="Black">
<ContentPresenter />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
扩展 ContentControl
:
public class MyControl : ContentControl {}
它有一个 Content
属性,您可以将其设置为任何 object
,包括 Grid
或任何其他 Panel
。
我正在 WPF 中创建一个自定义控件,我希望能够显示我放入其中的任何内容。
一个很好的例子是 Grid
、StackPanel
、DockPanel
您可以在哪里做类似的事情:
<StackPanel>
<TextBox />
<Button/>
</StackPanel>
并且 StackPanel 知道 TextBox
并且 Button
显示它们并做出相应的反应。
问题: 如何显示我放在控件中的内容?
我希望能够做类似的事情:
<controls:MyControl>
<Grid>
<TextBox />
<Button />
</Grid>
</controls:MyControl>
更新 后面的代码看起来像:
public class MyControl:ContentControl
{
static MyControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl),
new FrameworkPropertyMetadata(typeof(MyControl)));
}
}
<Style TargetType="{x:Type local:MyControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="1" BorderBrush="Black">
<ContentPresenter />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
扩展 ContentControl
:
public class MyControl : ContentControl {}
它有一个 Content
属性,您可以将其设置为任何 object
,包括 Grid
或任何其他 Panel
。