在所有其他列占用所需宽度后,如何设置网格的第一列以适合可用空间?

时间:2016-03-03 14:12:50

标签: wpf

我有一个有三列的网格。我需要在以下场景中计算列的宽度:

  

1.第二列和第三列从网格中获取所需的宽度(为简单起见,сolumn2.width+ column3.width是   总是小于grid.Width)。

     

2.在第一列之后,第二列和第三列留下所有可用宽度(即col1 = grid.width - (col2.Width + col3.W))。

此外,如果第一列的文本不适合其宽度,则应将其包装(即文本的高度应增加以显示其内容)。

click to zoom

我试过了

 <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>

1 个答案:

答案 0 :(得分:0)

列的宽度可以采用以下值,
1.Number
固定尺寸 的 2.Auto
列宽=细胞含量的宽度 第3 *(星/星号)
列宽=网格中的可用空间。

以下代码将给出所需的输出,

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

您可以使用数字代替&#34;自动&#34;保持这些列大小固定。