0

我有下一个布局

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="60" />
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="Auto" />
  </Grid.ColumnDefinitions>

  <Image Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" Width="60" Height="60" />

  <StackPanel Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Orientation="Horizontal">
    <TextBlock Text="Title should be long" HorizontalAlignment="Left" />
    <Ellipse Fill="White" Stroke="White" Width="7" Height="7" />
  </StackPanel>

  <TextBlock Grid.Row="1" Grid.Column="1" Text="Message" /> 
  <TextBlock Grid.Row="1" Grid.Column="2" Text="Info" />
</Grid>

我在托管标题和椭圆的 StackPanel 中有一个问题,目标是椭圆的在线标记应该放在标题的末尾。但它不应该超出视图部分。

我试图将 TextBox 和 Ellipse 放入 Grid 的单元格中,不幸的是它没有帮助。

<Grid Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2">
  <Grid.ColumnsDefinitions>
     <ColumnDefinition Width="Auto" />
     <ColumnDefinition Width="*" />
  </Grid.ColumnsDefinitions>

  <TextBlock Grid.Column="0" Text="Title should be long" HorizontalAlignment="Left" />
  <Ellipse Grid.Column="1" Fill="White" Stroke="White" Width="7" Height="7" />

</Grid>

在我看来,它应该呈现正确,但椭圆再次不在视野范围内。

这是一个 Expression Blend 布局截图,相同的布局在运行时呈现。

网格边界:

在此处输入图像描述

文本框边界:

在此处输入图像描述

椭圆边界:

在此处输入图像描述

所以 TextBox 和 Ellipse 不在网格中:(

更新:我需要布局的下一个行为

1) 短标题,附在标题末尾的椭圆

在此处输入图像描述

2)长标题,附在容器右侧的椭圆

在此处输入图像描述

4

1 回答 1

0

我试过你的代码,它渲染得很好(换句话说,它在视口中渲染。见红色箭头)。请在附件中找到结果的屏幕截图。(我添加了 showgridlines 只是为了说明行和列)

在此处输入图像描述

//--- 更改测试和固定代码以获得预期效果 ---//

XAML 中的代码更改:交换了列定义的宽度值。为文本块添加了 Textwrapping 以查看整个文本。(您可以根据自己的审美选择文本修剪。)

<Grid Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>

    <TextBlock Grid.Column="0" Text="Title should be really really really really really long" HorizontalAlignment="Left" TextWrapping="Wrap" />
    <Ellipse Grid.Column="1" Fill="White" Stroke="White" Width="7" Height="7"/>
</Grid>

结果:

在此处输入图像描述

于 2012-09-08T18:44:24.163 回答