C# 如何在考虑父容器大小的同时将一个元素停靠到另一个元素?

C# 如何在考虑父容器大小的同时将一个元素停靠到另一个元素?,c#,wpf,xaml,C#,Wpf,Xaml,我想在一个固定宽度的列中布局两个标签。一个左对齐并向右移,另一个直接向右移 当标签的组合宽度小于可用空间时,右侧应有空白空间。这是通过以下标记实现的: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions&

我想在一个固定宽度的列中布局两个标签。一个左对齐并向右移,另一个直接向右移

当标签的组合宽度小于可用空间时,右侧应有空白空间。这是通过以下标记实现的:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>

    <TextBlock TextTrimming="CharacterEllipsis" Text="Sample Name" />        
    <Label Content="Text" Foreground="#AAAAAA" Grid.Column="1"/>
</Grid>
<DockPanel LastChildFill="True">
    <Label Content="Text" Foreground="#AAAAAA" DockPanel.Dock="Right" />
    <TextBlock TextTrimming="CharacterEllipsis" Text="A Really Really Long Sample Name" />        
</DockPanel>

当第一个标签太大时,文本将被修剪,右侧的标签不应从列中推出。这是通过以下标记实现的:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>

    <TextBlock TextTrimming="CharacterEllipsis" Text="Sample Name" />        
    <Label Content="Text" Foreground="#AAAAAA" Grid.Column="1"/>
</Grid>
<DockPanel LastChildFill="True">
    <Label Content="Text" Foreground="#AAAAAA" DockPanel.Dock="Right" />
    <TextBlock TextTrimming="CharacterEllipsis" Text="A Really Really Long Sample Name" />        
</DockPanel>


如果没有不同的Xaml片段,我如何才能获得相同的结果(截图)?

事实证明,这是我认为我已经尝试过的东西。这是为了我:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
    <TextBlock TextTrimming="CharacterEllipsis" Text="Sample Name" />
    <Label Content="Text" Foreground="#AAAAAA" Grid.Column="1" />
</Grid>


很抱歉,第二种方法不适合这两种情况吗?哎呀,我把代码示例弄混了。当名称很长时,
Grid
方法不起作用,因为它会将“Text”标签推出可视区域。当名称较短时,
DockPanel
方法不起作用,因为“文本”标签固定在右侧;这不管用。标签保持在右侧,而不是靠近右侧。