【发布时间】:2015-08-03 12:43:35
【问题描述】:
我有一个 4 列的数据网格。前三个有Width="Auto",而最后一个有Width="*" 来填充剩余空间。我不想要水平滚动条,所以我禁用了。
当程序调整到一定宽度时,会出现上述情况(只有最后一列的文本被换行)。这看起来还没有那么糟糕, 但是,当您进一步减小窗口宽度时(其中没有任何空间来呈现右列),带有“wwwwwwwwwwwwwww ...”的列仍然不会换行它的文本,并且所有内容都变成白色的右列不断包装到无穷大(没有空间)。现在,我希望通过在最右边的列中引入最小宽度来解决这个问题,但它会导致该列(部分或全部)呈现在可见区域之外。
当我将第三列也作为Width="*" 执行时,它的工作方式与预期的一样,但这会导致最后一列的宽度显着削弱(这是我不想要的)。我尝试将其设置为具有最小宽度的Width="0.1*"(或任何类似的东西),但我从数据网格中得到了一个无穷大的异常。
这让我发疯了,我看不到摆脱这里的方法来实现我想要的。简而言之,我想要的只是将列的文本换行到数据网格的可用宽度。最后一列应该有宽度偏好。
XAML:
<DataGrid Grid.Row="0" Grid.Column="1" IsEnabled="{Binding HasValidSelectedItem}" ItemsSource="{Binding Items, IsAsync=True}" AutoGenerateColumns="False"
SnapsToDevicePixels="True" EnableColumnVirtualization="False" HorizontalAlignment="Stretch" CanUserAddRows="False" CanUserDeleteRows="False"
CanUserResizeRows="False" HorizontalScrollBarVisibility="Disabled" >
<DataGrid.Resources>
<Style TargetType="CheckBox" BasedOn="{StaticResource CenteredCheckBoxStyle}" x:Key="CenteredReadOnlyCheckBoxStyle">
<Setter Property="IsHitTestVisible" Value="False"/>
<Setter Property="Focusable" Value="False"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Test First"
Binding="{Binding First, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True" ElementStyle="{StaticResource CenteredReadOnlyCheckBoxStyle}"
EditingElementStyle="{StaticResource CenteredReadOnlyCheckBoxStyle}" >
</DataGridCheckBoxColumn>
<DataGridCheckBoxColumn Header="Test Second"
Binding="{Binding Second, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True" ElementStyle="{StaticResource CenteredReadOnlyCheckBoxStyle}"
EditingElementStyle="{StaticResource CenteredReadOnlyCheckBoxStyle}" />
<DataGridTextColumn Header="Test Third" Binding="{Binding Third}"
EditingElementStyle="{StaticResource DataGridEditingTextBoxStyle}" CellStyle="{StaticResource DataGridToolTipDataGridCellStyle}">
<DataGridTextColumn.ElementStyle>
<Style BasedOn="{StaticResource DataGridTextBlockStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="TextWrapping" Value="Wrap"/>
<Setter Property="Padding" Value="0,6"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Test Fourth" Width="*" IsReadOnly="True" Binding="{Binding Path=Fourth}"
EditingElementStyle="{StaticResource DataGridEditingTextBoxStyle}" CellStyle="{StaticResource DataGridToolTipDataGridCellStyle}">
<DataGridTextColumn.ElementStyle>
<Style BasedOn="{StaticResource DataGridTextBlockStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="TextWrapping" Value="Wrap"/>
<Setter Property="Padding" Value="0,6"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
【问题讨论】:
-
你能提供你所有的网格吗
-
忘记了@Cedric,再检查一次。