2016-09-20 1 views
0


Im пытается достичь чего-то вроде WPF DataGrid Grouping with sums and other fields, чтобы подвести итог свойства «количество» из элементов в группе. Но он бросает исключение в цикле Еогеаспа, что не может конвертировать 'пункты' к моему типу ('OrderItem' из которых я думал, что элементы должны быть ...)
C#WPF Converter не может получить доступ к базовому свойству

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 

     if (value is ReadOnlyObservableCollection<Object>) 
     { 
      var items = ((ReadOnlyObservableCollection<Object>) value); 
      Decimal total = 0; 
      foreach (OrderItem gi in items) 
      { 
       total += gi.quantity; 
      } 
      return total.ToString(); 

     } 
     return "0"; 
    } 

XAML

<ControlTemplate TargetType="{x:Type GroupItem}"> 
             <Expander> 
              <Expander.Header> 
               <StackPanel Orientation="Horizontal"> 
                <TextBlock Text="{Binding Path=Name}" Margin="5"/> 
                <TextBlock Text="Count" Margin="5" /> 
                <TextBlock Text="{Binding Path=Items, Converter={StaticResource additionConverter}}" Margin="5"/> 
               </StackPanel> 
              </Expander.Header> 
              <ItemsPresenter /> 
             </Expander> 
            </ControlTemplate> 

и ресурс

<local:AdditionConverter x:Key="additionConverter" /> 

, как получить доступ к базовому элементу «значения»? Я поставил точку останова, и он есть. Извините, если я что-то испортил, я новичок в WPF.

+0

Каков тип предмета, который он показывает, если не OrderItem? – AnjumSKhan

+0

Невозможно неявно преобразовать тип «MS.Internal.Data.CollectionViewGroupInternal» в «Plan_Produkcji_Beta.OrderItem» – kasperro

+0

Я предполагаю, что это будет связано с вашей привязкой, поскольку я думаю, что ваша привязка к свойству элемента управления WPF скорее чем непосредственно к данным. Что вы можете предоставить xaml для элемента с помощью конвертера? –

ответ

0

Заменить это:

foreach (OrderItem gi in items) 
     { 
      total += gi.quantity; 
     } 

с:

foreach (CollectionViewGroup group in items) 
    { 
     foreach(OrderItem item in group.Items) 
     { 
      total += item.quantity; 
     } 
    } 

и сказать, если это решит вашу проблему.

+0

Спасибо! Оно работает! Застрял с этим в течение двух дней ... – kasperro

+0

@kasperro Скачайте ILSpy сейчас. – AnjumSKhan

 Смежные вопросы

  • Нет связанных вопросов^_^