【发布时间】:2016-09-20 17:28:59
【问题描述】:
我试图在这里达到WPF DataGrid Grouping with sums and other fields 之类的东西来总结组中项目的“数量”属性。但它在 foreach 循环中抛出异常,它无法将“项目”转换为我的类型(我认为项目应该是“OrderItem”......)
C#
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" />
如何访问'value'的基本元素?我放了一个断点,它就在那里。 抱歉,如果我搞砸了,我是 WPF 新手。
【问题讨论】:
-
如果不是 OrderItem ,它显示的项目类型是什么?
-
无法将类型“MS.Internal.Data.CollectionViewGroupInternal”隐式转换为“Plan_Produkcji_Beta.OrderItem”
-
我的猜测是这与您的绑定有关,因为我认为您绑定到 WPF 控件的属性而不是直接绑定到数据。您可以使用转换器为项目提供什么 xaml?
-
我已将其发布在我的问题中
-
Items是 OrderItem 类型的一部分吗?我怀疑您想绑定到项目集合,但您在Items的 TextBlock 绑定中有错误的 DataContext。