【问题标题】:WPF Converter can't access base propertyWPF 转换器无法访问基本属性
【发布时间】: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。

标签: c# wpf converter


【解决方案1】:

替换这个:

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

与:

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

并判断这是否解决了您的问题。

【讨论】:

  • @kasperro 立即下载 ILSpy。
猜你喜欢
  • 2013-06-21
  • 1970-01-01
  • 2013-09-27
  • 2012-11-21
  • 2018-09-26
  • 2011-12-08
  • 2014-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多