2011-08-31 112 views
0

我試圖將一個類的ObservableCollection綁定到數據網格內的組合框。WPF組合框綁定問題

public class ProductContainer 
{ 
    public string Product { get; set; } 
    public List<string> SubProducts { get; set; } 

    public ProductContainer() 
    { 
     SubProducts = new List<string>(); 
    } 
} 

在我的MainWindow.xaml我有名單。

public ObservableCollection<ProductContainer> Products { get; set; } 

我試圖將它添加到組合框與我有的數據網格,但它沒有正確的綁定。 xaml會是什麼樣子?


<DataGrid AutoGenerateColumns="False" Name="ProductGrid" Width="Auto" 
      AlternatingRowBackground="LightSlateGray" SelectionMode="Single" SelectionUnit="FullRow" CanUserAddRows="True" CanUserDeleteRows="True" CurrentCellChanged="ProductGrid_CurrentCellChanged"> 
    <DataGrid.Resources> 
     <DataTemplate x:Key="editProductTemplate"> 
      <ComboBox x:Name="cbProducts" ItemsSource="{Binding Path=Products, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" SelectedItem="{Binding Product}" SelectedValuePath="Product" DisplayMemberPath="Product"/> 
     </DataTemplate> 
     <DataTemplate x:Key="editSubProductTemplate"> 
      <ComboBox ItemsSource="{Binding Product.SubProducts, UpdateSourceTrigger=PropertyChanged}" /> 
     </DataTemplate> 
    </DataGrid.Resources> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn MinWidth="120" 
      Header="Product"    
      CellTemplate="{StaticResource editProductTemplate}" /> 
     <DataGridTemplateColumn MinWidth="120" 
      Header="SubProduct"       
      CellTemplate="{StaticResource editSubProductTemplate}"/> 
    </DataGrid.Columns> 
</DataGrid> 

這在XAML它。第一個組合框會填充,但第二個組合框永遠不會根據第一個組合框中的內容填充,或者根本不顯示任何內容。

+0

DataGrid XAML的外觀如何? – Tigran

回答

1

取決於DataContexts。有關如何調試綁定see MSDN信息,那就是總是有用的,也有相關的問題,這可能會幫助你無論是在構建合適的結合,避免那些失敗:


您的第二個ComboBox.ItemsSource中的路徑應該可能只是SubProducts,因爲您的對象的Product屬性只是一個字符串。此外,您的課程應該implementINotifyPropertyChanged,以便可以通知UI任何更改。