我已經與約10 GridViewColumn的大約100行/列一個ListView。 我想在ListView的底部顯示「總計」或彙總行。C#/ WPF:想法如何分別顯示ListView的最後一行?
有沒有人有一個想法如何做到這一點,以保持columnWidth時等和其他人一樣,並使其成爲一個單獨的項目,所以「主」的ListView可以有一個滾動條?
我在這裏已經上傳了一個實體模型(我不好的圖形人才:-)不好意思):
image
我已經與約10 GridViewColumn的大約100行/列一個ListView。 我想在ListView的底部顯示「總計」或彙總行。C#/ WPF:想法如何分別顯示ListView的最後一行?
有沒有人有一個想法如何做到這一點,以保持columnWidth時等和其他人一樣,並使其成爲一個單獨的項目,所以「主」的ListView可以有一個滾動條?
我在這裏已經上傳了一個實體模型(我不好的圖形人才:-)不好意思):
image
這是如何與在端部區域的總數列表視圖的例子。列的寬度在各列和它的總
<Window x:Class="WpfApplication2.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="Window1"
x:Name="ctl"
Height="300"
Width="300">
<Window.Resources>
<GridViewColumnCollection x:Key="gvcc">
<GridViewColumn Width="{Binding Path=ActualWidth, ElementName=col1}"
Header="Date" />
<GridViewColumn Width="{Binding Path=ActualWidth, ElementName=col2}"
Header="Day Of Week"
DisplayMemberBinding="{Binding DayOfWeek}" />
<GridViewColumn Width="{Binding Path=ActualWidth, ElementName=col3}"
Header="Year"
DisplayMemberBinding="{Binding Year}" />
</GridViewColumnCollection>
</Window.Resources>
<Grid>
<DockPanel HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
LastChildFill="True">
<GridViewRowPresenter Name="listview_total"
DockPanel.Dock="Bottom"
Margin="0,5,0,5"
Columns="{StaticResource gvcc}">
<GridViewRowPresenter.Content>
<sys:DateTime>2005/2/1</sys:DateTime>
</GridViewRowPresenter.Content>
</GridViewRowPresenter>
<ListView x:Name="listview_rows"
SelectionMode="Single"
DockPanel.Dock="Top"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.View>
<GridView>
<GridViewColumn x:Name="col1"
Header="Date" />
<GridViewColumn x:Name="col2"
Header="Day Of Week"
DisplayMemberBinding="{Binding DayOfWeek}" />
<GridViewColumn x:Name="col3"
Header="Year"
DisplayMemberBinding="{Binding Year}" />
</GridView>
</ListView.View>
<sys:DateTime>1/2/3</sys:DateTime>
<sys:DateTime>4/5/6</sys:DateTime>
<sys:DateTime>7/8/9</sys:DateTime>
<sys:DateTime>10/11/12</sys:DateTime>
<sys:DateTime>1/2/3</sys:DateTime>
<sys:DateTime>4/5/6</sys:DateTime>
<sys:DateTime>7/8/9</sys:DateTime>
<sys:DateTime>10/11/12</sys:DateTime>
<sys:DateTime>1/2/3</sys:DateTime>
<sys:DateTime>4/5/6</sys:DateTime>
<sys:DateTime>7/8/9</sys:DateTime>
<sys:DateTime>10/11/12</sys:DateTime>
<sys:DateTime>1/2/3</sys:DateTime>
<sys:DateTime>4/5/6</sys:DateTime>
<sys:DateTime>7/8/9</sys:DateTime>
<sys:DateTime>10/11/12</sys:DateTime>
</ListView>
</DockPanel>
</Grid>
</Window>
它似乎像你想要的是下面的第一個第二個列表視圖,用一些保持列大小同步的方式。是否有可以勾選的事件讓您知道用戶已調整特定列的大小? (我不是一個真正的WPF人,但的WinForms提供ColumnSizeChanged和ColumnSizeChanging事件。)這是一個有點嚴重,但除非你本質上推出自己的自定義ListView控件,我不知道,如果你打算做的更好。
沒錯,這就是我正在尋找..感謝輸入,我覺得這是不是一個「容易」 /清潔的方式(例如無代碼隱藏/使用單獨的事件)。 – 2009-08-17 13:49:51
如果您的數據源是一個靜態資源,您可以使用複合式集合。我真的希望這可以在別處工作。可悲,真的。無論如何,如果你可以使用它真的很好。
<ListView>
<ListView.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{StaticResource MyCollection} />
<ListViewItem>Last Item</ListViewItem>
</CompositeCollection>
</ListView.ItemsSource>
</ListView>
Enjoy!
構建關閉federubin's excellent answer之間綁定,則可以將GridViewRowPresenter
的Columns
屬性直接綁定到GridView
的Columns
屬性。
<GridViewRowPresenter Columns="{Binding ElementName=ListViewGridViewName, Path=Columns}" ...>
列的寬度會自動在演示時,他們在主電網發生變化進行更新,你不再需要複製你的列定義。
<Window x:Class="WpfTestbed.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Grid>
<DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" LastChildFill="True">
<GridViewRowPresenter Columns="{Binding ElementName=ListViewGridView, Path=Columns}" DockPanel.Dock="Bottom" Margin="4,5,0,5">
<GridViewRowPresenter.Content>
<sys:DateTime>2005/2/1</sys:DateTime>
</GridViewRowPresenter.Content>
</GridViewRowPresenter>
<ListView SelectionMode="Single" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.View>
<GridView x:Name="ListViewGridView">
<GridViewColumn Header="Date" />
<GridViewColumn Header="Day Of Week" DisplayMemberBinding="{Binding DayOfWeek}" />
<GridViewColumn Header="Year" DisplayMemberBinding="{Binding Year}" />
</GridView>
</ListView.View>
<sys:DateTime>1/2/3</sys:DateTime>
<sys:DateTime>4/5/6</sys:DateTime>
<sys:DateTime>7/8/9</sys:DateTime>
<sys:DateTime>10/11/12</sys:DateTime>
<sys:DateTime>1/2/3</sys:DateTime>
<sys:DateTime>4/5/6</sys:DateTime>
<sys:DateTime>7/8/9</sys:DateTime>
<sys:DateTime>10/11/12</sys:DateTime>
<sys:DateTime>1/2/3</sys:DateTime>
<sys:DateTime>4/5/6</sys:DateTime>
<sys:DateTime>7/8/9</sys:DateTime>
<sys:DateTime>10/11/12</sys:DateTime>
<sys:DateTime>1/2/3</sys:DateTime>
<sys:DateTime>4/5/6</sys:DateTime>
<sys:DateTime>7/8/9</sys:DateTime>
<sys:DateTime>10/11/12</sys:DateTime>
</ListView>
</DockPanel>
</Grid>
</Window>
有一隻老鼠...... – cakeforcerberus 2009-08-17 13:47:52
@semirhage:這是什麼意思? – 2009-08-17 13:51:22