ListView.GridViewColumn (*) 宽度

Posted

技术标签:

【中文标题】ListView.GridViewColumn (*) 宽度【英文标题】:ListView.GridViewColumn (*) width 【发布时间】:2012-05-05 18:12:58 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

请尝试该解决方案:

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

【讨论】:

感谢 Bilal Hashmi。但是在上面的 xaml 方法中,我应该将 行代码放在我的 xaml 页面中,这样它就会影响 ListView 列。并且使用 IValueConverter 它在第一次加载屏幕时工作正常,但是当我最大化屏幕或调整屏幕大小时,它不会相应地调整列宽。 也许这可以帮助***.com/questions/560581/… 您可以将它放在显示 ListView 的 xaml 页面上的任何位置。假设在页面主网格的 Row=0 和 Column=0 处。 绝对是一个 hack,但它足够简单,而且效果很好,我喜欢它。 这是一个非常好的技巧。我遇到的主要问题是 ListViews 自动滚动条,当滚动条出现和消失时,列宽需要自动更新。我也不喜欢“校正宽度”黑客。我的解决方案是将上述解决方案与Q#9907017 结合起来,并绑定到ListView 的ScrollViewer 的“ViewportWidth”(不像答案中的那样)。注意在 ListView 布局后通过挂钩到 LayoutUpdated 来激活后面代码中的绑定(参见Q#4708039)【参考方案2】:

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

【讨论】:

以上是关于ListView.GridViewColumn (*) 宽度的主要内容,如果未能解决你的问题,请参考以下文章