Dear all,
i have Created small WPF application.. here is the code
Code for Test.XAML
<UserControl x:Class="Test" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:saisun="clr-namespace:SaiSunLibraries;assembly=SaiSunLibraries" mc:Ignorable="d" d:DesignHeight="299" d:DesignWidth="484"><UserControl.Resources><saisun:GroupTotalConverter x:Key="DateConverter"></saisun:GroupTotalConverter></UserControl.Resources><Grid><Grid.Resources><DataTemplate x:Key="HeaderTemplateArrowUp"><DockPanel><TextBlock HorizontalAlignment="Center" Text="{Binding}"/><Path x:Name="arrow" StrokeThickness = "1" Fill = "Gray" Data = "M 5,10 L 15,10 L 10,5 L 5,10"/></DockPanel></DataTemplate><DataTemplate x:Key="HeaderTemplateArrowDown"><DockPanel><TextBlock HorizontalAlignment="Center" Text="{Binding}"/><Path x:Name="arrow" StrokeThickness = "1" Fill = "Gray" Data = "M 5,5 L 10,10 L 15,5 L 5,5"/></DockPanel></DataTemplate><!--<Style TargetType="DataGridColumnHeader"><EventSetter Event="PreviewMouseLeftButtonDown" Handler="PreviewMouseLeftButtonDown"></EventSetter><EventSetter Event="PreviewMouseMove" Handler="PreviewMouseMove" /></Style>--><Style x:Key="dgvGroupHeaderStyle" TargetType="{x:Type GroupItem}"><Setter Property="Margin" Value="5,0,0,0" /><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type GroupItem}"><StackPanel><TextBlock Margin="15,0,15,0" Text="{Binding Path=Items, Converter={StaticResource DateConverter}}" Height="20" /><ItemsPresenter /></StackPanel></ControlTemplate></Setter.Value></Setter></Style></Grid.Resources><Grid.DataContext><ObjectDataProvider x:Name="obj" ObjectType="{x:Type saisun:PriorityDetails}" MethodName="CreateData"></ObjectDataProvider></Grid.DataContext><DockPanel><DataGrid DockPanel.Dock="Top" x:Name="dgvData" AutoGenerateColumns="False" GridLinesVisibility="None"><DataGrid.GroupStyle><GroupStyle ContainerStyle="{StaticResource dgvGroupHeaderStyle}"><GroupStyle.Panel><ItemsPanelTemplate><DataGridRowsPresenter /></ItemsPanelTemplate></GroupStyle.Panel></GroupStyle></DataGrid.GroupStyle><DataGrid.Columns><DataGridTextColumn Header="User Name" Binding="{Binding UserName}" /><DataGridTemplateColumn Header="Total Task"><DataGridTemplateColumn.CellTemplate><DataTemplate><TextBlock Text="{Binding TotalTask}" HorizontalAlignment="Stretch" TextAlignment="Right" Height="10"></TextBlock></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn></DataGrid.Columns></DataGrid></DockPanel></Grid></UserControl>
code for the Test.XAML.vb
Private Sub Test_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded x = New ListCollectionView(PriorityDetails.CreateData) x.GroupDescriptions.Add(New PropertyGroupDescription("PriorityName")) x.GroupDescriptions.Add(New PropertyGroupDescription("ActivityName")) dgvData.ItemsSource = x End Sub
Code for the Converter implementation
---------------------------------------------------
Imports System.Data Imports System.Windows.Data Imports System.Collections.ObjectModel Imports System.Xml Public Class GroupTotalConverter Implements IValueConverter Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert ' Dim cvg As CollectionViewGroup If value Is Nothing Then Return Nothing End If 'cvg = TryCast(value, CollectionViewGroup) 'If cvg Is Nothing Then Return value.ToString 'Dim items As ReadOnlyObservableCollection(Of Object) = DirectCast(value, ReadOnlyCollection(Of Object)) 'Dim sum As Integer = 0 'For Each item As Object In cvg.Items ' Dim xmlele As XmlElement = TryCast(item, XmlElement) ' If Not xmlele Is Nothing Then ' Dim j As Integer = 0 ' If Double.TryParse(xmlele.Attributes("TotalTask").Value, j) AndAlso j >= 0 Then ' sum += j ' End If ' End If 'Next 'Return sum.ToString 'Dim i As Object Dim items As ReadOnlyObservableCollection(Of Object) = DirectCast(value, ReadOnlyObservableCollection(Of Object)) Dim tot As Integer = (From i As Object In items Select DirectCast(i, PriorityDetails).TotalTask).Sum() Return tot.ToString End Function Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack Throw New NotImplementedException() End Function End Class
now i got following error while running application when i try to compute sum on underlined word (DirectCast(i, PriorityDetails))
Unable to cast object of type 'MS.Internal.Data.CollectionViewGroupInternal' to type 'SaiSunLibraries.PriorityDetails'.
kindly do needful for the same
Tejas Kishanwala