WPF:如何将内容控件包装在另一个中?

Posted

技术标签:

【中文标题】WPF:如何将内容控件包装在另一个中?【英文标题】:WPF: How can I wrap a content control in another? 【发布时间】:2010-12-07 00:27:39 【问题描述】:

我有以下作为UserControl 的正文:

<Label FontWeight="Bold"
       x:Name="PaletteLabel"
       HorizontalAlignment="Stretch"
       BorderThickness="1"
       >
    <Label.Background>
        <LinearGradientBrush EndPoint="0.5,1"
                             StartPoint="0.5,0">
            <GradientStop Color="#FFB6B5C3"
                          Offset="0" />
            <GradientStop Color="#FFF4F4F6"
                          Offset="1" />
        </LinearGradientBrush>
    </Label.Background>
    <ContentPresenter  />
</Label>

我希望能够像这样使用它:

<uc:NiceLabel>Text Content</uc:NiceLabel>

但这并没有给我预期的效果。我在这里犯了什么明显的错误吗?

【问题讨论】:

【参考方案1】:

您可以通过简单的样式来完成此操作(如果我没听错的话)。

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <Style TargetType="x:Type Label" x:Key="NiceLabelStyle">
            <Setter Property="FontWeight" Value="Bold" />
            <Setter Property="BorderThickness" Value="1" />
            <Setter Property="HorizontalAlignment" Value="Stretch" />
            <Setter Property="Background">
                <Setter.Value>
                    <LinearGradientBrush EndPoint="0.5,1"
                             StartPoint="0.5,0">
                        <GradientStop Color="#FFB6B5C3"
                          Offset="0" />
                        <GradientStop Color="#FFF4F4F6"
                          Offset="1" />
                    </LinearGradientBrush>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <StackPanel>
        <Label Style="StaticResource NiceLabelStyle">Test</Label>
    </StackPanel>
</Window>

【讨论】:

【参考方案2】:

可能被How to create a WPF UserControl with NAMED content覆盖

【讨论】:

以上是关于WPF:如何将内容控件包装在另一个中?的主要内容,如果未能解决你的问题,请参考以下文章

WPF怎样将两个控件连接起来

WPF怎样将两个控件连接起来

弹出窗口 WPF 表单自定义控件内容

如何禁用 WPF WebBrowser 控件的点击噪音?

WPF:如何使用透明画布和可点击子项制作覆盖控件

WPF 10天修炼 - 内容控件