我简单地定义了一个网格:
<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)
设置如下,文本将不会换行.它只是扩展列以适合文本.如果我在最后一列上将宽度设置为固定量,则换行按预期工作.问题在于,如果用户加宽窗口,则列保持固定大小.如何使用网格的宽度动态调整列的大小,但仍然将文本包装在其中?
我发现有一个令人沮丧的案例,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.IsSharedScopeSize到false那就行了.
还没有找到解决方案,但这可能是它不起作用的另一个原因.