首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ChildCollection将DataGridColumn绑定到WPF DataGridColumn

用ChildCollection将DataGridColumn绑定到WPF DataGridColumn
EN

Stack Overflow用户
提问于 2014-02-12 14:20:28
回答 1查看 90关注 0票数 0

好的,我有一个WPF DataGrid绑定到一个产品集合。Product有一个名为ParentNumber的属性和两个导航属性,Product ParentICollection<Product> SubProducts

我想用一个小图片在我的DataGrid中指出什么产品是孩子,什么产品是父母。

在我的DataGrid中,我有一个包含两个图像的专栏。第一个映像的可见性属性绑定到parentNumber,如果parentNumber不是null,则转换器返回parentNumber。那部分很简单。

那么,我的问题是,我如何能够对父产品做同样的事情呢?我要绑什么?我需要在类中添加另一个属性吗?做这件事最好的方法是什么?

我已经在Product中的所有属性上实现了INotifyPropertyChanged

以下是代码:

代码语言:javascript
复制
<DataGridTemplateColumn Header="Productnr" IsReadOnly="True">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Image Height="16"
                       Margin="0,0,5,0"
                       Source="{StaticResource ChildImage}"
                       Visibility="{Binding Path=IsChild,
                                                 Mode=OneWay,
                                                 Converter={StaticResource BoolToVisibilityConverter}}" />
                <Image Height="16"
                       Margin="0,0,5,0"
                       Source="{StaticResource ParentImage}"
                       Visibility="{Binding ???? />
                <TextBlock Text="{Binding Path=ProductNumber}" />
            </StackPanel>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

public class Product : INotifyPropertyChanged
{
    public string ProductNumber { get; set; }

    public string ParentNumber
    {
        get
        {
            return _parentNumber;
        }
        set
        {
            _parentNumber = value;
            OnPropertyChanged("ParentNumber");
        }
    }

    public virtual Product Parent { get; set; }

    public virtual ICollection<Product> SubProducts
    {
        get
        {
            return _subProducts;
        }
        set
        {
            _subProducts = value;
            OnPropertyChanged("SubProducts");
        }
    }

    ...
}
EN

回答 1

Stack Overflow用户

发布于 2014-02-13 09:40:51

您可以添加一个转换器来检查子产品计数是否大于0。我要说的是,创建单独的属性IsChild和IsParent有点多余,因为其他属性已经很清楚了。如果您只将它用于导航图标,则可以将其保存在转换器中。如果你用它来做其他的事情,那就去接受Blam的建议吧。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21730562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档