好吧,所以我有一个WPF DataGrid绑定到产品集合。 Product类具有一个名为ParentNumber的属性和两个导航属性Product Parent
和ICollection<Product> SubProducts
。绑定ChildCollection WPF DataGridColumn与IValueConverter
我想在我的DataGrid中用小图像指示什么产品是儿童,什么产品是父母。
在我的DataGrid中,我有一个包含两个图像的列。如果parentNumber不为null,则第一个图像的可见性属性绑定到parentNumber,并返回System.Windows.Visibility.Visible。这部分很容易。
所以我的问题是我如何能做到父产品相同?我绑定什么?我需要在我的课堂中添加其他属性吗?做这个的最好方式是什么?
我已经在产品类的所有属性上实施了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");
}
}
...
}
是向产品添加一个属性以标识它是否为父母。你的意思是把现有的知名度视为TwoWay?转换器如何知道PartNumber返回的内容?在产品中,我会有两个属性IsParent和IsChild。在我看来,转换器中的IsParent是UI中的业务逻辑。 – Paparazzi
好的,我会测试它,它是有道理的。我只是认为我并不需要为此目的添加属性,因为我已经有父类和childCollection。 – Dux
如果你已经拥有了它,那么它对我来说就不清楚了。尝试另一个转换器。? – Paparazzi