【发布时间】:2016-03-09 05:21:58
【问题描述】:
我试图在这个 WPF 应用程序中实现的是总结列“大小”的所有值,该列按页眉上的家庭分组。数据网格中是否有任何方法可以对特定类别下分组的所有行的列进行求和?
XAML
<Window.Resources>
<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander x:Name="exp" IsExpanded="False" Background="White" Foreground="Black">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Name="TotalSize" Text="Total size here" Margin="290 0 0 0" />
</StackPanel>
</Expander.Header>
<ItemsPresenter Margin="20 0 0 0" />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
C#
public partial class MainWindow : Window
{
ObservableCollection<DownloadManager> dManager = new ObservableCollection<DownloadManager>();
public MainWindow()
{
InitializeComponent();
XmlDocument doc = new XmlDocument();
doc.Load("dm.xml");
XmlNodeList xnList = doc.SelectNodes("/root/repository/MEDIA");
foreach (XmlNode media in xnList)
{
string PRODUCT = media["PRODUCT"].InnerText;
string SIZE = media["SIZE"].InnerText;
string MEDIASTATUS = media["MEDIASTATUS"].InnerText;
string FAMILY = media["FAMILY"].InnerText;
dManager.Add(new DownloadManager { Name = PRODUCT, Size = SIZE, Description = MEDIASTATUS, Family = FAMILY });
}
ListCollectionView collection = new ListCollectionView(dManager);
collection.GroupDescriptions.Add(new PropertyGroupDescription("Family"));
dataGrid.ItemsSource = collection;
}
}
public class DownloadManager
{
public string Name { get; set; }
public string Size { get; set; }
public string Description { get; set; }
public string Family { get; set; }
}
XML
<root>
<repository >
<MEDIA>
<PRODUCT>MS Office</PRODUCT>
<FAMILY>Paid</FAMILY>
<SIZE>1056</SIZE>
<MEDIASTATUS>LIVE</MEDIASTATUS>
</MEDIA>
<MEDIA>
<PRODUCT>Matlab</PRODUCT>
<FAMILY>Paid</FAMILY>
<SIZE>2096</SIZE>
<MEDIASTATUS>LIVE</MEDIASTATUS>
</MEDIA>
<MEDIA>
<PRODUCT>Winzip</PRODUCT>
<FAMILY>Free</FAMILY>
<SIZE>119</SIZE>
<MEDIASTATUS>LIVE</MEDIASTATUS>
</MEDIA>
<MEDIA>
<PRODUCT>Team Viewer</PRODUCT>
<FAMILY>Free</FAMILY>
<SIZE>256</SIZE>
<MEDIASTATUS>LIVE</MEDIASTATUS>
</MEDIA>
<MEDIA>
<PRODUCT>Coral Draw</PRODUCT>
<FAMILY>Paid</FAMILY>
<SIZE>3110</SIZE>
<MEDIASTATUS>LIVE</MEDIASTATUS>
</MEDIA>
<MEDIA>
<PRODUCT>Photoshop</PRODUCT>
<FAMILY>Free</FAMILY>
<SIZE>2056</SIZE>
<MEDIASTATUS>LIVE</MEDIASTATUS>
</MEDIA>
</repository>
</root>
【问题讨论】:
-
使用
{Binding ItemCount}代替“此处的总大小”。 :-) -
@XAMlMAX :项目数,计算行数。我需要列“大小”的总和
-
每个组的列大小相同,您需要的是特定列内的字符串长度。您需要更新您的问题,因为它具有误导性。
-
@XAMlMAX “汇总列'size'的所有值”不清楚? IE。
Paid Total size = 1056 + 2096 + 3110和Free Total size = 119 + 256 + 2056 -
@OhBeWise 那是因为我误读了这个问题。正如你在我之前的评论中看到的那样。
标签: c# wpf wpfdatagrid