Есть Xml-файл с таким содержимым:
<Student Id="0">
<FirstName>Robert</FirstName>
<Last>Jarman</Last>
<Age>21</Age>
<Gender>0</Gender>
<Student Id="1">
<FirstName>Leona</FirstName>
<Last>Menders</Last>
<Age>20</Age>
<Gender>1</Gender>
И так еще много студентов
Задачей является вывести все значения в ComboBox, или любые подходящие поля. Прочитать смог таким образом: XDocument doc = XDocument.Load(path); А как их впихнуть в разные поля Combobox? Спасибо =)
Хоть я в XML и не спец, но давайте попробуем так:
var xmlStr = File.ReadAllText("temp.xml");.XElement нашу строку: var str = XElement.Parse(xmlStr);var students = str.Elements("Student");ComboBox. В Xaml: <ComboBox x:Name="ComboBox1" />foreach (var student in students)
{
var id = student.FirstAttribute.Value;
var FirstName = student.Element("FirstName")?.Value;
var Last = student.Element("Last")?.Value;
var Age = student.Element("Age")?.Value;
var Gender = student.Element("Gender")?.Value == "0" ? "Дядя" : "Тетя";
ComboBox1.Items.Add($"[{id}] {FirstName} {Last} это {Gender} и за плечами {Age} г. ");
}
p.s. Не форматировался код без цитаты, если кто сможет, уберите ее.
Что мы тут видим? Хм, а нечего сверх сложного, просто у каждого объекта, который найдется для нашего цикла, мы отберем необходимые нам параметры, дальше мы их попросту добавим в наш ComboBox1.
Вы делаете как-то слишком вручную. Выучите MVVM на досуге!
Имея класс Student из этого вопроса, проблема решается совсем просто.
<ComboBox ItemsSource="{Binding Students}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="{x:Type local:Student}">
<TextBlock>
<Run Text="{Binding FirstName, Mode=OneWay}"/>
<Run Text="{Binding Last, Mode=OneWay}"/>
<!-- и так далее -->
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей