【问题标题】:WPF Custom Control Display the ContentWPF 自定义控件显示内容
【发布时间】:2021-07-09 19:58:31
【问题描述】:

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

一个很好的例子是GridStackPanelDockPanel

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

<StackPanel>
   <TextBox />
   <Button/>
</StackPanel>

StackPanel 知道 TextBoxButton 会显示它们并做出相应的反应。

问题: 如何显示我放入控件的内容?

我希望能够做类似的事情:

<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>

【问题讨论】:

    标签: wpf wpf-controls


    【解决方案1】:

    扩展ContentControl:

    public class MyControl : ContentControl {}
    

    它有一个Content 属性,您可以将其设置为任何object,包括Grid 或任何其他Panel

    【讨论】:

    • XAML 在控件中应该是什么样子?
    • 与您自己发布的完全一样:&lt;controls:MyControl&gt;...&lt;/controls:MyControl&gt;。将... 替换为任何元素或面板。
    • 所以这不起作用。我会更新问题
    • 您的更新不符合我的建议...删除静态构造函数和ControlTemplate
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多