Держу пари, это что-то очень просто # Обновление: Это не #, но я не нашел соломинья чисто в XAML
.Комбобокс в Datagrid: Значения отсутствуют
У меня есть два объекта: А ObservableCollection
с "Tasks
" как ItemsSource
в Datagrid
. И ObservableCollection
string
s, которые должны быть значениями в combobox
. Имя Task
привязано к первому столбцу. Пока что так хорошо, что работает.
Теперь я хочу добавить combobox
во второй столбец с некоторыми параметрами на выбор. Отбор должен быть привязан к task
's ExecutingCore
.
Я думаю, что я что-то перепутал с DataGridComboBoxColumn
ItemsSource
. Как я могу сделать это здесь, чтобы отобразить мои значения в качестве раскрывающегося списка?
<DataGrid Grid.Column="3" ItemsSource="{Binding Database.list_Tasks}"
HorizontalAlignment="Left" Margin="21,52,0,0" VerticalAlignment="Top"
Height="262" Width="205" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Task" Binding="{Binding Task_Spec_Name}"/>
<DataGridComboBoxColumn
Header="Executing core" Width="100"
ItemsSource="{Binding list_CoreID}"
SelectedItemBinding="{Binding ExecutingCore, Mode=TwoWay}"/>
</DataGrid.Columns>
</DataGrid>
list_CoreID
НЕ является собственностью Database.list_Tasks
. ViewModel
- DataContext
.
ViewModel.Database.list_Tasks
ViewModel.list_CoreID
То, как это выглядит.
Update
Я попробовал решение от EagleBeak:
<DataGridComboBoxColumn
Header="Executing core" Width="100"
ItemsSource="{Binding ElementName=TasksGrid, Path=DataContext.list_CoreID}"
SelectedItemBinding="{Binding ExecutingCore, Mode=TwoWay}"/>
</DataGrid.Columns>
Но это приводит к ошибке:
ошибка: System.Windows.Data Ошибка: 2: Не удается найти руководящих FrameworkElement или FrameworkContentElement для целевого элемента. BindingExpression: Path = DataContext.list_CoreID; DataItem = NULL; целевым элементом является «DataGridComboBoxColumn» (HashCode = 20169503); предназначаться свойством является «ItemsSource» (типа «IEnumerable»)
я нашел что-то в блоге: http://www.thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/
«WPF не знает, какое FrameworkElement использовать, чтобы получить DataContext, потому что столбец не принадлежит к визуальному или логическому дереву DataGrid ».
Есть ли лучшее решение?
Извините, человек. Мое решение не сработало, и внезапно я нахожусь в осаде здесь на работе. Боюсь, мне нужно отступить от обсуждения. Но, возможно, это помогает: http://stackoverflow.com/questions/2890156/how-to-bind-collection-to-wpfdatagridcomboboxcolumn – EagleBeak
Нет проблем, спасибо в любом случае. Я сделал это сейчас в коде, это работает без проблем. – Andreas
Эй, человек. Просто вернулась к вашей проблеме и просмотрела ссылку из блога Levesque, которую вы опубликовали. Теперь я помню, что кто-то из команды, в которой я работал, имел эту проблему несколько лет назад. И решение BindingProxy - это именно то, что мы сделали тогда. Гораздо лучше, чем код за ИМО. – EagleBeak