Ой!
Для чего вы используете DataTable ?!Это ужасно неэффективно для этой цели и требует от вас написания большого количества дополнительного кода.Кроме того, почему вы устанавливаете свойства ComboBox из кода, а не из XAML?
Гораздо более простой способ - привязать ваш ComboBox непосредственно к XML:метод DataTable, но для добавления строки «Выбрать событие» потребуется добавить CompositeCollection.Это можно сделать, но ...
Лучшее решение - использовать LINQ to XML:
public object Events
{
get
{
return new[] { new { Name = "--Select Event--", Id = -1 }}.Concat(
from element in EventsXml.Elements("M_EVENT")
where element.Element("ROW_STATUS").Value=="1"
select new
{
Name = element.Element("EVENT_NAME").Value,
Id = int.Parse(element.Element("PK_EVENT_ID").Value),
});
}
}
С этим простым XAML:
<ComboBox ItemsSource="{Binding Events}" SelectedValuePath="Id" ...>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
LINQРешение для XML быстрее, чем привязка к XML, что, в свою очередь, быстрее, чем использование DataTable.Кроме того, решение LINQ to XML намного чище, чем два других.