Quantcast
Channel: Windows Presentation Foundation (WPF) forum
Viewing all articles
Browse latest Browse all 18858

Group Total Problem

$
0
0

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



Viewing all articles
Browse latest Browse all 18858

Trending Articles