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:如何将内容控件包装在另一个中?的主要内容,如果未能解决你的问题,请参考以下文章