Итак, у меня есть DataGrid WPF для коллекции продуктов. Класс Product имеет свойство ParentNumber и два навигационных свойства: Product Parent
и ICollection<Product> SubProducts
.Связывание ChildCollection с WPF DataGridColumn с IValueConverter
Я хочу указать в своем DataGrid с небольшим изображением, какие продукты являются детьми и какие продукты являются родителями.
В моей DataGrid У меня есть столбец с двумя изображениями. Первое изображение имеет свойство видимости, связанное с parentNumber с конвертером, который возвращает System.Windows.Visibility.Visible, если parentNumber не равен NULL. Эта часть была легкой.
Итак, мой вопрос в том, как я могу сделать то же самое для родительского продукта? К чему я привязан? Нужно ли добавлять другое свойство в мой класс? Каков наилучший способ сделать это?
Я внедрил INotifyPropertyChanged на все свойства класса Product.
Вот код:
<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 в конвертере - это бизнес-логика в пользовательском интерфейсе. – Paparazzi
Хорошо, я проверю это, и это имеет смысл. Я просто подумал, что мне не нужно добавлять свойства к классу для этой цели только с тех пор, как у меня уже есть родительский элемент и childCollection. – Dux
Если у вас уже есть это, то мне это непонятно. Попробуйте другой конвертер. – Paparazzi