我有一个WPF UserControl,它只是一个标签,用于其他任何东西。例如,TextBox的标签。我想将此TextBox放在LabeledControl标记中,如下所示:
<LabeledControl Label="First name">
<TextBox Binding="{FirstName}" />
</LabeledControl>
我想要这样做的原因是设置控件及其标签外观的样式。
我找不到明显的方法来做到这一点。我是否正确地接近这个?我应该查看模板吗?
答案 0 :(得分:3)
我想说更好的选择是使用内置的HeaderedContentControl
,它允许您指定Header
(您的标签)和Content
(您的文字)盒子)财产。
然后,您可以为ControlTemplate
指定HeaderedContentControl
来改变外观:
<Style x:Key="MyLabelledItemStyle" TargetType="HeaderedContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="HeaderedContentControl">
<StackPanel Orientation="Horizontal">
<ContentControl Content="{TemplateBinding Header}" Margin="2" />
<ContentControl Content="{TemplateBinding Content}" Margin="2" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
此示例仅在StackPanel
中水平连接两个组件,但如果需要,您可以执行更复杂的操作。
然后您可以在XAML中使用它,如下所示:
<HeaderedContentControl Style="{StaticResource MyLabelledItemStyle}" Header="First Name">
<TextBox Text="{Binding FirstName}" />
</HeaderedContentControl>