Заполните Combobox внутри сетки данных - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь заполнить поле со списком внутри таблицы данных WPF.Это Xaml

    <DataGrid x:Name="objects"  ItemsSource="{Binding}"  AutoGenerateColumns="False" HorizontalAlignment="Left" Height="91" Margin="96,56,0,0" VerticalAlignment="Top" Width="260" SelectionChanged="DataGrid_SelectionChanged" RenderTransformOrigin="0.581,0.499">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Object Name" Binding="{Binding objName}" ClipboardContentBinding="{x:Null}"/>
            <DataGridComboBoxColumn x:Name="dataGridComboBoxColumn"  Header="Material" ClipboardContentBinding="{x:Null}" ItemsSource="{Binding Items, RelativeSource={RelativeSource AncestorType=Window}}" SelectedValuePath="{Binding Path=SelectedAwaitingItem, Mode=TwoWay}" Width="Auto" TextBinding="{x:Null}"/>
        </DataGrid.Columns>

    </DataGrid>   

, а код

class objects(object):
  def __init__(self, objName,Items):
      self.objName = objName
      self.SelectedAwaitingItem = ""
      self.Items = Items    


    gridUnknownDocs = LogicalTreeHelper.FindLogicalNode(self, 'objects')
    item = []
    politetitles = {
    1 : ('Mr' ), 
    2 : ('Ms'),
    3 : ('Mrs'), 
    4 : ('Sir'),
    }


    item.append(objects("Cube",["3" "2"]))
    item.append(objects("Square",["1" "2"]))
    gridUnknownDocs.ItemsSource = item

Я могу видеть, что текстовое поле заполнено правильно (со значениями Cube и Square), но поле со списком выглядит всегда пустымЛюбое предложение о том, что я скучаю?Спасибо Макс

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Так вы бы связали свойство ItemsSource DataGridComboBoxColumn со свойством визуального предка:

<DataGridComboBoxColumn DisplayMemberPath="Material" ClipboardContentBinding="{x:Null}" SelectedValuePath="{Binding Path=SelectedAwaitingItem, Mode=TwoWay}" Width="Auto" TextBinding="{x:Null}">
    <DataGridComboBoxColumn.ElementStyle>
        <Style>
            <Setter Property="ComboBox.ItemsSource" Value="{Binding Items, RelativeSource={RelativeSource AncestorType=Window}}" />
        </Style>
    </DataGridComboBoxColumn.ElementStyle>
    <DataGridComboBoxColumn.EditingElementStyle>
        <Style>
            <Setter Property="ComboBox.ItemsSource" Value="{Binding Items, RelativeSource={RelativeSource AncestorType=Window}}" />
        </Style>
    </DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
0 голосов
/ 13 декабря 2018

Любое свойство, оканчивающееся на path, ожидает строку, которая является именем свойства.У вас есть привязка для выбранного значения.Я не слежу за тем, что на самом деле содержит элементы, но вам нужно указать, какое свойство является значением, а какое отображать.https://social.technet.microsoft.com/wiki/contents/articles/26347.wpf-combobox-binding-in-datagrid.aspx

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