【发布时间】:2016-03-03 14:12:50
【问题描述】:
我有一个包含三列的网格。我需要在以下情况下计算列的宽度:
1.第二列和第三列从网格中获取所需的宽度(为简单起见,暗示 сolumn2.width + column3.width 是 总是小于 grid.Width)。
2.在第一列占用第二列和第三列留下的所有可用宽度之后(即 col1 = grid.width - (col2.Width + col3.W))。
此外,如果第一列的文本不适合其宽度,则应将其换行(即文本应增加高度以显示其内容)。
我试过了
<DataTemplate DataType="{x:Type s:DiagramDataList}">
<ListView ItemsSource="{Binding DataElementList}"
HorizontalContentAlignment="Stretch"
Background="Transparent"
Focusable="False"
IsHitTestVisible="False"
BorderThickness="0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition ></ColumnDefinition>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=Title}"
Grid.Column="0"
TextWrapping="Wrap"></TextBlock>
<TextBlock Text="{Binding Path=CurrentValue}"
Grid.Column="1"></TextBlock>
<TextBlock Text="{Binding Path=Difference}"
Grid.Column="2"
HorizontalAlignment="Right"
Background="{Binding HtmlColor, Converter={StaticResource HtmlColorToColorConverter}}"
Visibility="{Binding Path=Difference, Converter={StaticResource NullToVisibilityConverter}}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</DataTemplate>
【问题讨论】:
-
我认为你应该使用
Width="Auto"来表示column2和column3使其适合内容,然后使用Width="*"来表示column1以获得所有剩余的空间。 -
@Bolu,你是对的。我还切换到 DataGrid 以使行自动对齐。不是我的所有要求都完成了,但我正在努力。
标签: wpf