WPF:文本换行不起作用

4 wpf word-wrap

我简单地定义了一个网格:

<Grid Margin="0,5,0,0">
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="50"></ColumnDefinition>
    <ColumnDefinition Width="50"></ColumnDefinition>
    <ColumnDefinition Width="48"></ColumnDefinition>
    <ColumnDefinition Width="Auto"></ColumnDefinition>
   </Grid.ColumnDefinitions>
Run Code Online (Sandbox Code Playgroud)

然后我试图绑定一些像这样的内容:

<TextBlock TextWrapping="Wrap" Grid.Column="3" Text="{Binding Text}">
Run Code Online (Sandbox Code Playgroud)

设置如下,文本将不会换行.它只是扩展列以适合文本.如果我在最后一列上将宽度设置为固定量,则换行按预期工作.问题在于,如果用户加宽窗口,则列保持固定大小.如何使用网格的宽度动态调整列的大小,但仍然将文本包装在其中?

Bry*_*yan 5

宽度"*"将使用在列之间均匀地分割任何剩余空间"*".如果您有一个列Width="*",该列将获得所有剩余空间.如果你有2列Width="*",每个将获得剩余空间的1/2.

这是一篇关于网格大小好文章,其中包括星号大小.


Sim*_*ver 5

我发现有一个令人沮丧的案例,Width="*"当你拥有时可以收支平衡.IsSharedSizeScope= true

<Border BorderBrush="Red" BorderThickness="1">
    <StackPanel Grid.IsSharedSizeScope="True">

        <Grid HorizontalAlignment="Stretch">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" SharedSizeGroup="G1"/>
                <ColumnDefinition Width="Auto" SharedSizeGroup="G2" />
                <ColumnDefinition Width="*"  SharedSizeGroup="G3" />
            </Grid.ColumnDefinitions>

            <TextBlock Text="Col0" Grid.Column="0" Margin="0,0,5,0"/>
            <TextBlock Text="Col1" Grid.Column="1" Margin="0,0,5,0"/>

            <TextBlock Text="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" TextWrapping="Wrap" Grid.Column="2"/> 
        </Grid>

    </StackPanel>                   

</Border>
Run Code Online (Sandbox Code Playgroud)

这不会换行,但如果你换Grid.IsSharedScopeSizefalse那就行了.

还没有找到解决方案,但这可能是它不起作用的另一个原因.