43

我正在使用ListView控件而不是DataGrid在我的WPF应用程序中。我想给*我的宽度ListView.GridViewColumn,但是每当我给我提供*宽度时ListView.GridViewColumn,它都会给我一个编译时错误。请建议我如何提供*宽度ListView.GridViewColumn,以便ListView.GridViewColumn在我最大化屏幕时自动填充额外空间。

对此的任何帮助将不胜感激。谢谢

4

2 回答 2

80

请尝试该解决方案:

<ListView>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="column1" x:Name="col1"/>
            <!--Column that shall resize: Width is set to the Actual Width of the helper field defined below-->
            <GridViewColumn Header="column2" 
                            Width="{Binding ElementName=helperField, Path=ActualWidth}"/>
        </GridView>
    </ListView.View>
    Test Text
</ListView>

<!--This is the hidden helper Grid which does the resizing -->
<Grid Visibility="Hidden">
    <Grid.ColumnDefinitions>
        <!--Width is bound to width of the first GridViewColumn -->
        <ColumnDefinition Width="{Binding ElementName=col1, Path=ActualWidth}"/>
        <!--Width is set to "Fill"-->
        <ColumnDefinition Width="*"/>
        <!--Correction Width-->
        <ColumnDefinition Width="10"/>
    </Grid.ColumnDefinitions>
    <!--This is the hidden helper Field which is used to bind to, using the "Fill" column of the helper grid-->
    <Grid Grid.Column="1" x:Name="helperField"/>
</Grid>

您还可以在以下链接中找到其他一些解决方案:

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/3ee5696c-4f26-4e30-8891-0e2f95d69623/

于 2012-04-25T04:51:55.083 回答
3

我在这里发布了我的方法,这有点不同(但发现它非常可靠并且允许百分比宽度列https://stackoverflow.com/a/10526024/41211),因为我尝试了上述方法并找到了我的 devenv。 exe 处理最大化,因为它不断尝试使用上述动态绑定重新评估我的设计器视图。

于 2012-05-10T00:33:40.103 回答