好的,我有一个绑定到产品集合的WPF DataGrid。 Product类有一个名为ParentNumber的属性和两个导航属性Product Parent
和ICollection<Product> SubProducts
。
我想在我的DataGrid中用小图片表明哪些产品是儿童产品,哪些产品是父母产品。
在我的DataGrid中,我有一个包含两个图像的列。第一个图像的可见性属性绑定到parentNumber,如果parentNumber不为null,则返回System.Windows.Visibility.Visible的Converter。那部分很容易。
所以我的问题是如何为父产品做同样的事情?我绑定什么?我需要在课堂上添加另一个属性吗?这样做的最佳方式是什么?
我在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");
}
}
...
}
答案 0 :(得分:0)
你可以添加一个转换器来检查副产品数是否大于0.我想说,制作一个单独的属性IsChild和IsParent有点多余,因为它已经从其他属性中清楚了。如果您只将它用于导航图标,则可以将其保留在转换器中。如果您将其用于其他事情,请参考Blam的建议。