我有一些label
“我的文字”。
我有一些UserControl
,里面有文字(“文字部分”)和一些文字附近的视觉部分。
左图是我想要实现的。对,就是我得到的。
我希望我的UserControl
中心不是默认中心,而是自定义点。
因为“我的文本”的长度可能不同,同时它应该相对于我的控件“文本部分”中心居中。
目标^当前^
答案 0 :(得分:0)
您需要定义单独的列,一个以居中文本为中心,另一个为视觉标签。
现在棘手的部分是将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>