WPF DataGrid - проблема настройки ComboBox - PullRequest
0 голосов
/ 06 октября 2009

У меня есть Datagrid со связанным столбцом со списком, который прекрасно работает следующим образом:

<tk:DataGridComboBoxColumn SelectedValueBinding="{Binding DefaultLocationID}"                                            
    SelectedValuePath="LocationID"
    DisplayMemberPath="LocationName"    
    Header="Default Location"
    ItemsSource="{Binding Source={StaticResource CustomerLocations}}">
</tk:DataGridComboBoxColumn>

В конечном итоге я хочу настроить раскрывающийся список, чтобы в нем отображались «ID» и «Имя», чтобы шаблон TemplateColumn казался подходящим. Начав с малого, я не могу заставить работать следующий простой пример, который должен заменить стандартный DataGridComboBoxColumn. Раскрывающийся список выглядит нормально, но когда я «выбираю» выпадающий элемент, он не принимает и возвращается к предыдущему значению. Я пробовал варианты "Mode = TwoWay", но не повезло. Нужно ли мне CellEditingTemplate?

DefaultLocationID - это поле для редактирования внешнего ключа, а «LocationID» - это столбец в «CustomerLocations».

<tk:DataGridTemplateColumn  Header="Default Location">
    <tk:DataGridTemplateColumn.CellTemplate>
       <DataTemplate>
            <ComboBox   VerticalAlignment="Top"   
                  SelectedItem="{Binding LocationID, Mode=TwoWay}" 
                  SelectedValue="{Binding DefaultLocationID, Mode=TwoWay}"  

                  ItemsSource="{Binding Source={StaticResource CustomerLocations}}"
                        SelectedValuePath="LocationID"
                        DisplayMemberPath="LocationName" >
              </ComboBox>
       </DataTemplate>
  </tk:DataGridTemplateColumn.CellTemplate>

Спасибо !!

1 Ответ

0 голосов
/ 07 октября 2009

Можете ли вы опубликовать соответствующие части вашего ресурса CustomerLocations? Вы также можете опубликовать тип класса, к которому привязана ваша сетка?

Попробуйте удалить SelectedValuePath, DisplayMemberPath и SelectedValue из комбинированного списка.

Если вы хотите отобразить несколько частей данных в вашем комбинированном списке, см. Ниже XAML

<ComboBox ...>
    <ComboBox.ItemTemplate>
        <DataTemplate>
             <StackPanel Orientation="Horizontal">
                  <TextBlock Text="{Binding LocationId}"} />
                  <TextBlock Text=" - "/>
                  <TextBlock Text="{Binding LocationName}"} />
             </StackPanel>
       </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...