的最後一欄我有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. GridView控件的ListView VS
- 4. WPF ListView的GridView控件複製到剪貼板
- 5. 添加項目的ListView GridView控件在C#WPF
- 6. 排序ListView控件在WPF
- 7. 長按不ListView控件
- 8. WPF ListView/GridView單選錯誤
- 9. WPF控制的ListView
- 10. WPF的ListView/GridView的高亮顏色
- 11. Gridview,ListView,Repeater - 哪個控件好?
- 12. 掩蓋WPF中列的內容ListView/GridView
- 13. 你如何延長級聯UI控件
- 14. Android的 - 如何使延伸的ListView控件也延長我的基本視點的活動
- 15. WPF:如何滾動ListView控件水平?
- 16. WPF自定義ListView控件模板
- 17. 定製WPF ListView控件以使用SurfaceScrollViewer
- 18. WPF ListView控件右邊框切斷
- 19. WPF ListView控件編程取消項目
- 20. WPF綁定2列到ListView控件
- 21. 如何從ListView控件在WPF
- 22. jQuery的延長()在延長()
- 23. WPF中ListView和GridView有什麼區別?
- 24. WPF ListView GridView DisplayMemberBinding中心alignin內容
- 25. 在GridView和WPF中查找listview項目
- 26. 刪除WPF ListView/GridView突出顯示鉻
- 27. WPF不能用gridview改變listview背景
- 28. 延長sharepoint人脈控制
- 29. 的ListView DataBindig使用MVVM(WPF,ListView控件,綁定)
- 30. 從延長部件
這是一個[偉大的鏈接](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