1
У меня возникли проблемы с установкой данных XML в качестве источника Items для моего DataGrid Combobox.Загрузка WPF DataGrid ComboBox в данные XML
Ниже мой XML код:
<?xml version="1.0" standalone="yes"?>
<Table>
<FRUIT>
<edible>True</edible>
<Types main="Apple">
<Type>Fuji</Type>
<Type>Gala</Type>
</Types>
</FRUIT>
<FRUIT>
<edible>True</edible>
<Types main="Banana">
<Type>Burro</Type>
<Type>Red</Type>
</Types>
</FRUIT>
</Table>
Следующая является XAML код WPFtoolkit DataGrid Combobox:
<Custom:DataGridTemplateColumn Header="Fruits" Width="300">
<Custom:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Name="cboFruit"/>
</DataTemplate>
</Custom:DataGridTemplateColumn.CellTemplate>
</Custom:DataGridTemplateColumn>
Прежде чем я должен загрузить данные в ComboBox, я просто поставил XML в DataSet и установить DataContext DataGrid в первую таблицу в DataSet.
Теперь это не сработает, так как я пытаюсь поместить каждый тип фруктов в ComboBox.
Я могу изменить что-либо в XML, чтобы заставить его работать. Дайте мне знать, если вам нужна дополнительная информация.
Заранее благодарен!
Опубликовано ниже полный XAML для моего CustomDataGrid (WPFtoolkit):
<Window.DataContext>
<XmlDataProvider x:Name="FruitData" XPath="fruits/fruit" />
</Window.DataContext>
<Grid>
<Custom:CustomDataGrid x:Name="dgFruits" AutoGenerateColumns="False" Margin="5" CanUserAddRows="True"
ItemsSource="{Binding XPath=fruits/fruit}"><!--Here is confusion-->
<Custom:DataGrid.Columns>
<!--Edible-->
<Custom:DataGridTextColumn Header="Edible" Binding="{Binding XPath=edible}"/>
<!--Fruit-->
<Custom:DataGridTemplateColumn Header="Fruit Types" Width="300">
<Custom:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding XPath=types/type}"/><!--This works fine on a combobox outside of the DataGrid-->
</DataTemplate>
</Custom:DataGridTemplateColumn.CellTemplate>
</Custom:DataGridTemplateColumn>
</Custom:CustomDataGrid>
</Grid>
файл XML является недействительным. XML-документ может иметь только один корень. Также нам не нужен какой-либо DataSet для загрузки XML. Вы можете использовать такие, как 'XmlDataProvider' или даже Linq-to-XML. –
А, мой плохой. У меня есть 1 корень для капсулы ФРУКТОВ (названный
Я не уверен, но свойство 'Source' является изменчивым. Вы можете просто попробовать изменить это свойство в коде. Обратите внимание, что структура данных должна быть такой же, чтобы текущее Связывание не было нарушено после переключения источника. –
ответ
Вот пример использования
XmlDataProvider
макет Обновление XML следующим:
В XAML, создать данные, а затем получить доступ к узлам XML с использованием XPath
Edit:
Здесь он использует DataGrid
источник
2014-10-21 19:59:39
Ах, большое вам спасибо за ваш ответ! Быстрый вопрос - будет ли работать с XMLDataProvider, если изменится путь к файлу исходного XML-файла? Я имею в виду, что у меня есть C: \ test1 \ fruits.xml и C: \ test2 \ fruits.xml. Пользователь сможет выбирать между двумя файлами XML. – Turkwise
@Turkwise вы можете определенно изменить источник. См. Это сообщение для получения дополнительной информации: http://stackoverflow.com/questions/2037906/how-to-change-xmldataprovider-source-in-wpf-at-runtime –
Спасибо, я получил информацию для заполнения в регулярной combobox , но combobox в моей CustomDataGrid остается пустым, когда я использую тот же код. Есть ли что-то, что мне не хватает в основной части DataGrid? Я попробовал, но не прошел. –
Turkwise
Смежные вопросы