Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 栅格上的左水平对齐_C#_Wpf - Fatal编程技术网

C# 栅格上的左水平对齐

C# 栅格上的左水平对齐,c#,wpf,C#,Wpf,我试图在以下情况下使用HorizontalAlignment=“Left”: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <Grid HorizontalAlignment="Left"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefi

我试图在以下情况下使用HorizontalAlignment=“Left”:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
  <Grid HorizontalAlignment="Left">
    <Grid.ColumnDefinitions>
      <ColumnDefinition />
      <ColumnDefinition />
      <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Column="0" Background="Gray" Text="Small Text"  TextWrapping="Wrap"/>
    <TextBlock Grid.Column="1" Background="White" Text="This is a very large amount of text"  TextWrapping="Wrap"/>
    <TextBlock Grid.Column="2" Background="Gray" Text="Medium amount of text" TextWrapping="Wrap"/>
  </Grid>
</Window>

我的目标是能够调整窗口大小,并使三个文本块按比例调整大小。这是可行的,但网格在最后一列的右侧留出了一些空白,当我试图朝着最后一列调整大小时,这些列开始收缩。我想要这种收缩行为,但我不想让它开始,直到最右边的列没有更多的空白

我不能使用UniformGrid,因为文本长度可能会变化,而且我所看到的任何其他内置WPF控件都无法在父级大小更改时调整所有子级的大小。我已经考虑过创建一个自定义面板,但这似乎比它的价值更麻烦。我觉得这里可以做一些更简单的事情

任何建议或想法都将不胜感激。

这个怎么样

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>

您必须构建自己的自定义面板,并处理可用宽度
小于面板子级
所需宽度的情况

WPF中的面板布局(网格是一个面板)是一个两步过程,在第一步中,面板迭代其子级,并向它们提供面板的
可用宽度
。孩子们对此的反应是计算他们的
DesiredWidth

在第二遍中,面板根据子对象的
所需宽度安排子对象。在第二遍中,您可以访问所有子项(在您的情况下为TextBlocks)所需的宽度。如果它小于面板的可用宽度,则可以计算一个百分比来给出每个宽度,以便它们看起来均匀收缩


我已经试过了,但它并没有改变行为。但是,如果我使用Width=“Auto”,则调整大小的行为将完全消失,因此似乎这与网格的任何位置都没有设置宽度有关,但设置宽度可以防止网格列收缩,从而防止我所追求的文本换行功能。那么你说的是,你需要将网格左对齐?