Проблема привязки поля со списком WPF - PullRequest
0 голосов
/ 01 сентября 2011

Я пытаюсь связать ObservableCollection класса с полем со списком в сетке данных.

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 для него.Первое поле со списком заполняется, но второе никогда не заполняется в зависимости от того, что находится в первом, или вообще ничего не показывает.

1 Ответ

1 голос
/ 01 сентября 2011

Зависит от DataContexts.Для получения информации о том, как отладить привязки см. MSDN , это всегда полезно, и есть связанные вопросы, которые могут помочь вам как в построении правильной привязки, так и в том, чтобы избежать неудачных:


Путь в вашем втором ComboBox.ItemsSourceдолжно быть просто SubProducts, так как свойство Product вашего объекта - просто строка.Кроме того, ваши классы должны реализовать INotifyPropertyChanged, чтобы пользовательский интерфейс мог получать уведомления о любых изменениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...