Проблема привязки DataGridComboBoxColumn selectItem - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь создать ComboBox внутри DataGrid и выполнить привязку selectItem, но когда я пишу этот код и выбираю элемент в ComboBox в столбце, все элементы ComboBox в столбце DataGrid связываются и показывают то же самое выбранный пункт. Мне нужно связать каждый элемент ComboBox с его selectedItem. Я был бы счастлив получить помощь.

это мой код:

                        <DataGridComboBoxColumn  Header="CHOOSE" Width="0.7*"  
            DisplayMemberPath="Name" SelectedItemBinding="{Binding Path=SelectedReceiver,{RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">               
    <DataGridComboBoxColumn.ElementStyle>                      
                    <Style TargetType="{x:Type ComboBox}">
                        <Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.RxList}" />
                        <Setter Property="ItemTemplate" >
                            <Setter.Value>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Path= Name}" Style="{StaticResource GroupBoxHeaderTextBlockStyle}" />
                                </DataTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </DataGridComboBoxColumn.ElementStyle >
                <DataGridComboBoxColumn.EditingElementStyle>
                    <Style TargetType="{x:Type ComboBox}">
                        <Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.RxList }" />
                        <Setter Property="ItemTemplate">
                            <Setter.Value>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Path= Name}" Style="{StaticResource GroupBoxHeaderTextBlockStyle}"/>
                                </DataTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </DataGridComboBoxColumn.EditingElementStyle>
    </DataGridComboBoxColumn>

1 Ответ

0 голосов
/ 30 августа 2018

Вы связываетесь с DataGrid.ItemsSource.SomeList, когда вам действительно нужно связать с DataGrid.ItemsSource[x].SomeList.

В основном ваш список и выбранный элемент всегда будут одинаковыми для каждого столбца. Вы можете использовать статический список для вашего класса модели элементов (если список остался прежним) и свойство для SelectedItem.

<DataGridComboBoxColumn SelectedItemBinding="{Binding SelectedReceiver}"> <!-- Bind to current item's SelectedReceiver -->
    <DataGridComboBoxColumn.ElementStyle>
        <Style TargetType="{x:Type ComboBox}">
            <Setter Property="ItemsSource" Value="{Binding Path=(modelNamespace:MyModel.RxList)}"/> <!-- Bind to static list property -->
        </Style>
    </DataGridComboBoxColumn.ElementStyle>
</DataGridComboBoxColumn>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...