2011-10-07 61 views
1

我有一个WPF UserControl,它仅仅是一个标签,用于其他任何内容。例如,文本框的标签。我想这个文本框放置LabeledControl标记里面,像这样:在UserControl实例中嵌入内容

<LabeledControl Label="First name"> 
    <TextBox Binding="{FirstName}" /> 
</LabeledControl> 

我想这样做的原因是为了风格的控制方式和它们的标签看。

我找不到明显的方法来做到这一点。我是否以正确的方式接近这个?我应该看看模板吗?

回答

3

我想说一个更好的选择是使用内置的HeaderedContentControl,它允许你指定一个Header(你的标签)和一个Content(你的文本框)属性。

然后,您可以指定一个ControlTemplateHeaderedContentControl改变外观:

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