在wpf中更改控制中心

时间:2016-06-14 08:04:05

标签: c# wpf

我有一些label“我的文字”。 我有一些UserControl,里面有文字(“文字部分”)和一些文字附近的视觉部分。

左图是我想要实现的。对,就是我得到的。

我希望我的UserControl中心不是默认中心,而是自定义点。 因为“我的文本”的长度可能不同,同时它应该相对于我的控件“文本部分”中心居中。

enter image description here

目标^当前^

1 个答案:

答案 0 :(得分:0)

snapshot

您需要定义单独的列,一个以居中文本为中心,另一个为视觉标签。

现在棘手的部分是将UserControl中的一列与其外部的一列进行同步。你可以使用SharedSizeGroups,就像在这个例子中一样,为了方便我只使用了ContentControl而不是UserControl:

   <Grid IsSharedSizeScope="True">
  <Grid.RowDefinitions>
     <RowDefinition Height="Auto"/>
     <RowDefinition Height="Auto"/>
  </Grid.RowDefinitions>
  <Grid HorizontalAlignment="Stretch" Background="Red">
     <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
     </Grid.RowDefinitions>
     <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" SharedSizeGroup="colLeft"/>
        <ColumnDefinition Width="Auto" SharedSizeGroup="colRight"/>
     </Grid.ColumnDefinitions>
     <Label HorizontalAlignment="Center" Background="LightBlue">MyText</Label>
  </Grid>
  <ContentControl Grid.Row="1">
     <Grid HorizontalAlignment="Stretch" Background="Yellow">
        <Grid.RowDefinitions>
           <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
           <ColumnDefinition Width="Auto" SharedSizeGroup="colLeft"/>
           <ColumnDefinition Width="Auto" SharedSizeGroup="colRight"/>
        </Grid.ColumnDefinitions>
        <Label HorizontalAlignment="Center" Background="Lime">text part a little longer
        </Label>
        <Label Grid.Column="1">someVisualLabel</Label>
     </Grid>
  </ContentControl>