的最后一栏我有3列一个GridView一个ListView。我希望最后一列占用ListView的剩余宽度。WPF:延长ListView的GridView控件
回答
有一种方法可以做到这一点使用的行为模式
<ListView HorizontalAlignment="Stretch"
Behaviours:GridViewColumnResize.Enabled="True">
<ListViewItem></ListViewItem>
<ListView.View>
<GridView>
<GridViewColumn Header="Column *"
Behaviours:GridViewColumnResize.Width="*" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox HorizontalAlignment="Stretch" Text="Example1" />
</DataTemplate>
</GridViewColumn.CellTemplate>
请参阅以下链接的一些例子和链接阅读更多http://lazycowprojects.tumblr.com/post/7063214400/wpf-c-listview-column-width-auto
而且看到日e源代码。退房 https://github.com/rolfwessels/lazycowprojects/tree/master/Wpf
“行为:GridViewColumnResize.Width”和“行为:GridViewColumnResize.Enabled”在WPF中不存在;你在使用第三方框架吗?提到这一点本来是有用的。现在下调,直到您的答案被修正/更新。 – Krythic 2017-11-08 22:10:35
@Krythic它认为你可能错过了我解释的部分,你需要添加一些源代码..它们被称为行为...是wpf的一部分。查看github链接,将其添加到您的源代码中。 – 2017-12-01 08:26:41
嗯,我在2011年写道,我不再真的做WPF了,但我会想象这个问题已经解决了。 – 2017-12-01 08:28:40
快速&脏
XAML:
<ListView SizeChanged="ListView_SizeChanged" Loaded="ListView_Loaded" >
<ListView.View>
<GridView>
<GridViewColumn Header="col1" Width="100" />
<GridViewColumn Header="col1" Width="Auto" />
<GridViewColumn Header="col1" />
</GridView>
</ListView.View>
</ListView>
CS:
private void ListView_SizeChanged(object sender, SizeChangedEventArgs e)
{
UpdateColumnsWidth(sender as ListView);
}
private void ListView_Loaded(object sender, RoutedEventArgs e)
{
UpdateColumnsWidth(sender as ListView);
}
private void UpdateColumnsWidth(ListView listView)
{
int autoFillColumnIndex = (listView.View as GridView).Columns.Count - 1;
if (listView.ActualWidth == Double.NaN)
listView.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
double remainingSpace = listView.ActualWidth;
for (int i = 0; i < (listView.View as GridView).Columns.Count; i++)
if (i != autoFillColumnIndex)
remainingSpace -= (listView.View as GridView).Columns[i].ActualWidth;
(listView.View as GridView).Columns[autoFillColumnIndex].Width = remainingSpace >= 0 ? remainingSpace : 0;
}
忽略滚动条的样子。 – Mark 2013-04-14 14:59:09
如何使用样式
<Style x:Key="GridViewExtraStyle" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Background" Value="{x:Null}"/>
<Setter Property="Foreground" Value="{x:Null}"/>
<Setter Property="BorderBrush" Value="{x:Null}"/>
<Setter Property="Width" Value="1000"/>
</Style>
<ListView>
<ListView.View>
<GridView>
<GridViewColumn Header="Abc"/>
<GridViewColumn Header="" HeaderContainerStyle="{DynamicResource GridViewExtraStyle}"/>
</GridView>
</ListView.View>
</ListView>
我用苍白强麦的建议对于小的修改:
<Style x:Key="GridViewExtraStyle" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Background" Value="{x:Null}"/>
<Setter Property="Foreground" Value="{x:Null}"/>
<Setter Property="BorderBrush" Value="{x:Null}"/>
</Style>
<ListView>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{DynamicResource GridViewExtraStyle}">
<GridViewColumn Header="Abc" Width="{Binding Path=mywidth}"/>
</GridView>
</ListView.View>
</ListView>
您不能删除最后一列,但你可以干什么一点幻想。
<ControlTemplate TargetType="GridViewColumnHeader">
<Grid>
<ContentPresenter x:Name="HeaderContent"
Content="{TemplateBinding Content}" ... />
<Thumb x:Name="PART_HeaderGripper" ... />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="HasContent"
Value="false">
<Setter Property="Visibility"
Value="Collapsed"
TargetName="PART_HeaderGripper" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
我还没有看到一个单行/简单的XAML唯一的解决方案。设置的宽度是适当的设计视图,然后修改窗口大小变化这样的宽度:
Private Sub winMain_SizeChanged(sender As Object, e As SizeChangedEventArgs) Handles Me.SizeChanged
TryCast(lvwDownload.View, GridView).Columns(3).Width = lvwDownload.ActualWidth - 340
End Sub
注意:此逻辑不改变/悬停一列的宽度的另一调整大小时。填写最后一列的列表视图非常棒。
- 1. wpf mvp listview与gridview长渲染时间
- 2. WPF ListView控件
- 3. WPF ListView的GridView控件复制到剪贴板
- 4. 添加项目的ListView GridView控件在C#WPF
- 5. 长按不ListView控件
- 6. WPF ListView/GridView单选错误
- 7. WPF ListView-> GridView-> StackPanel
- 8. WPF控制的ListView
- 9. Gridview,ListView,Repeater - 哪个控件好?
- 10. WPF的ListView/GridView的高亮颜色
- 11. 定制WPF ListView控件以使用SurfaceScrollViewer
- 12. WPF ListView控件编程取消项目
- 13. WPF:如何滚动ListView控件水平?
- 14. 如何从ListView控件在WPF
- 15. WPF自定义ListView控件模板
- 16. WPF ListView控件右边框切断
- 17. 在GridView和WPF中查找listview项目
- 18. WPF不能用gridview改变listview背景
- 19. 删除WPF ListView/GridView突出显示铬
- 20. WPF ListView GridView DisplayMemberBinding中心alignin内容
- 21. WPF中ListView和GridView有什么区别?
- 22. 延长sharepoint人脉控制
- 23. 的ListView DataBindig使用MVVM(WPF,ListView控件,绑定)
- 24. Listview gridview
- 25. WPF:如何控制listview/gridview中上下文菜单的弹出框
- 26. GridView控件的AutoPostBack
- 27. GridView控件的DoubleClick
- 28. WPF中ListView中的访问控制
- 29. 在GridView控件
- 30. 从GridView控件
这是一个[伟大的链接](http://stackoverflow.com/questions/5573152/how-to-resize-a-certain-control-based-on-window-size-in-wpf#5573895)对的。 – FodderZone 2012-12-19 17:33:30