WPF组合框绑定问题

问题描述:

我试图将一个类的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

取决于DataContexts。有关如何调试绑定see MSDN信息,那就是总是有用的,也有相关的问题,这可能会帮助你无论是在构建合适的结合,避免那些失败:


您的第二个ComboBox.ItemsSource中的路径应该可能只是SubProducts,因为您的对象的Product属性只是一个字符串。此外,您的课程应该implementINotifyPropertyChanged,以便可以通知UI任何更改。