我想说一个更好的选择是使用内置的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>