好的,我有一个WPF DataGrid绑定到一个产品集合。Product有一个名为ParentNumber的属性和两个导航属性,Product Parent和ICollection<Product> SubProducts。
我想用一个小图片在我的DataGrid中指出什么产品是孩子,什么产品是父母。
在我的DataGrid中,我有一个包含两个图像的专栏。第一个映像的可见性属性绑定到parentNumber,如果parentNumber不是null,则转换器返回parentNumber。那部分很简单。
那么,我的问题是,我如何能够对父产品做同样的事情呢?我要绑什么?我需要在类中添加另一个属性吗?做这件事最好的方法是什么?
我已经在Product中的所有属性上实现了INotifyPropertyChanged。
以下是代码:
<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");
}
}
...
}发布于 2014-02-13 09:40:51
您可以添加一个转换器来检查子产品计数是否大于0。我要说的是,创建单独的属性IsChild和IsParent有点多余,因为其他属性已经很清楚了。如果您只将它用于导航图标,则可以将其保存在转换器中。如果你用它来做其他的事情,那就去接受Blam的建议吧。
https://stackoverflow.com/questions/21730562
复制相似问题