2014-02-12 49 views
0

好吧,所以我有一個WPF DataGrid綁定到產品集合。 Product類具有一個名爲ParentNumber的屬性和兩個導航屬性Product ParentICollection<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"); 
     } 
    } 

    ... 
} 
+0

是向產品添加一個屬性以標識它是否爲父母。你的意思是把現有的知名度視爲TwoWay?轉換器如何知道PartNumber返回的內容?在產品中,我會有兩個屬性IsParent和IsChild。在我看來,轉換器中的IsParent是UI中的業務邏輯。 – Paparazzi

+0

好的,我會測試它,它是有道理的。我只是認爲我並不需要爲此目的添加屬性,因爲我已經有父類和childCollection。 – Dux

+0

如果你已經擁有了它,那麼它對我來說就不清楚了。嘗試另一個轉換器。? – Paparazzi

回答

0

可以添加一個檢查,如果子產品計數大於0。我要說的是讓一個單獨的屬性IsChild和IsParent是有點多餘,因爲它是一個轉換器已經從其他屬性中清除。如果您只將其用於導航圖標,則可以將其保存在轉換器中。如果你把它用於其他的事情,也可以和Blam的建議一起使用。