如何使GridViewColumn的宽度等于Grid的宽度

时间:2011-07-19 09:15:03

标签: .net wpf listview layout

我有一个2X2网格,在我的主应用程序窗口中填充了2个Listview控件和一些按钮和文本框。以下是我的XAML代码的一部分:

<Grid Name="Gd">    
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <ListView MinHeight="600" Grid.Column="0" Grid.Row="1" Margin="10">
        <ListView.View>
            <GridView>
                <GridViewColumn Width="330" Header="Module ID" />
            </GridView>
        </ListView.View>
    </ListView>

    <ListView MinHeight="600" Grid.Column="0" Grid.Row="2" Margin="10">
        <ListView.View>
            <GridView>
                <GridViewColumn Width="330" Header="Module Name" />
            </GridView>
        </ListView.View>
    </ListView>    
</Grid>

我遇到的困难是我不知道如何设置宽度等于Grid列的宽度。我应该在后面的代码中做到吗?另外,另一个问题是上面的代码无法处理Grid调整大小的情况。

理想情况下,我希望ListView控件填充Grid列,并在Grid的大小发生变化时相应地展开/收缩。我想这与ColumnDefinition设置有关,我不太清楚。

有人可以帮忙吗?非常感谢。

2 个答案:

答案 0 :(得分:1)

如果要将ListView放在第一列中,则列定义应如下所示:

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

Aslo,正如大家已经说过的那样,为HorizontalAlignment="Stretch"个控件设置ListView

答案 1 :(得分:0)

试试这个.... 如果你想要两个ListViews的高度相等,那么你可以指定rowdefinition height为*,否则你可以给自动.....

<Grid Name="Gd">

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

        <ListView HorizontalAlignment="Stretch" Grid.Column="0" Grid.Row="0" Margin="10">
            <ListView.View>
                <GridView>
                    <GridViewColumn Width="330" Header="Module ID"/>
                </GridView>
            </ListView.View>
        </ListView>

        <ListView HorizontalAlignment="Stretch" Grid.Column="0" Grid.Row="1" Margin="10">
            <ListView.View>
                <GridView>
                    <GridViewColumn Width="330" Header="Module Name" />
                </GridView>
            </ListView.View>
        </ListView>

    </Grid>