2011-02-15 105 views
0

我想裝飾一些控件組,如:裝飾用戶控件WPF

<UserControl x:Class="Infrastructure.UI.ItemsGroup" ... > 
    <Border BorderBrush="Black" BorderThickness="1" CornerRadius="5" Background="Red"> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="*" /> 
       <RowDefinition Height="25" /> 
      </Grid.RowDefinitions> 
      <ContentPresenter Grid.Row="0" /> 
      <TextBlock x:Name="ctrlGroupText" Grid.Row="1" HorizontalAlignment="Center" /> 
     </Grid> 
    </Border> 
</UserControl> 

而且使用它在其他XAML的文件,比如:

<Grid Grid.Column="0"> 
    <UI:ItemsGroup GroupText="Hello World"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition /> 
       <ColumnDefinition /> 
      </Grid.ColumnDefinitions> 
      <Button>1111</Button> 
      <Button>1111</Button> 
     </Grid> 
    </UI:ItemsGroup> 
</Grid> 

但它不工作。我錯了什麼? :) 感謝

+0

這是不清楚你的問題。你的意思是你想重用你的`UserControl`並在其中放入不同的內容?什麼不適用於你有什麼? – 2011-02-15 09:05:02

+0

是的,我想重複使用我的UserControl並在其中放入不同的內容。它不起作用 - 我沒有看到例如邊框和'Hello world'文本如果我添加一些按鈕(請參閱upd2) – Lari13 2011-02-15 09:12:36

回答

3

您需要編輯的UserControl模板,而不是添加Border爲兒童

<UserControl x:Class="Infrastructure.UI.ItemsGroup" ... > 
    <UserControl.Template> 
     <ControlTemplate TargetType="{x:Type UserControl}"> 
      <Border BorderBrush="Black" BorderThickness="1" CornerRadius="5" Background="Red"> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="25" /> 
        </Grid.RowDefinitions> 
        <ContentPresenter Grid.Row="0" /> 
        <TextBlock x:Name="ctrlGroupText" Grid.Row="1" HorizontalAlignment="Center" /> 
       </Grid> 
      </Border> 
     </ControlTemplate> 
    </UserControl.Template> 
</UserControl> 

更新

要爲TextBlock文本到GroupText即可使用綁定

<TextBlock x:Name="ctrlGroupText" 
      Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:ItemsGroup}}, 
          Path=GroupText}" 
      Grid.Row="1" 
      HorizontalAlignment="Center" />