Я знаю, что эта тема поднималась несколько раз раньше, но я пробовал способы, которые я нашел здесь, и ни одна из них, похоже, не работает.Я не знаю, потому что я использую разные источники привязки, или я просто терплю неудачу, или что ...
У меня есть DataGrid, который привязан к документу XML, считанному в память.У меня есть список, содержащий все различные значения, которые мог бы иметь один столбец, и я хочу использовать его в качестве ItemsSource для столбца ComboBox.
Мой XAML выглядит следующим образом:
<DataGrid AutoGenerateColumns="False" IsReadOnly="False" Height="400" HorizontalAlignment="Left" Margin="125,15,0,0" x:Name="dg" VerticalAlignment="Top" Width="500">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Width="40*" Binding="{Binding Path=Element[name].Value}" />
<DataGridTextColumn Header="Count" Width="10*" Binding="{Binding Path=Attribute[count].Value}" />
<!-- I want this to be a ComboBox in a DataGridTemplateColumn -->
<DataGridTextColumn Header="Category" Width="25*" Binding="{Binding Path=Attribute[category].Value}" />
<DataGridTextColumn Header="Image Path" Width="25*" Binding="{Binding Path=Element[image].Value}" />
</DataGrid.Columns>
</DataGrid>
Ипример узла XML, который отображается си, будет выглядеть следующим образом:
<entry count="1" category="someCategory">
<name>Entry 1</name>
<image>c:\image.png</image>
</entry>
Наконец, список, который я хочу использовать в качестве ItemsSource для ComboBoxes:
var categories = from category in xmlDoc.Root.Elements("entry") select category .Attribute("category").Value;
List<string> catList= categories .ToList<string>();
Итак, когда пользовательредактирует поле категории. Я хочу, чтобы он имел выпадающий список, содержащий возможные значения, содержащиеся в списке.
РЕДАКТИРОВАТЬ: Наконец-то все заработало, я сделал, как указано в принятом ответе, установил ItemsSource в ComboBox на
ItemsSource="{DynamicResource categoryList}"
, а затем просто сделал это в коде после создания нужного мне элемента списка.использовать для заполнения ComboBox:
Resources["categoryList"] = catList;