WPF 自定义控件显示内容

WPF Custom Control Display the Content

我正在 WPF 中创建一个自定义控件,我希望能够显示我放入其中的任何内容。

一个很好的例子是 GridStackPanelDockPanel

您可以在哪里做类似的事情:

<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