Предположим, что xml хранится в папке "c: \ test.xml" и имеет содержимое:
<?xml version="1.0" standalone="yes"?>
<target name="main" depends="init">
<antcall target="Exec_Install_abc" />
</target>
Итак, вы должны поместить XmlDataProvider в ваш xaml в качестве статического ресурса:
<Window.Resources>
<XmlDataProvider Source="c:\\test.xml" x:Key="xDoc"/>
<self:UnderscoresConverter x:Key="UnderscoresConverter"/>
</Window.Resources>
Затем используйте свойство Binding for Content в флажке:
<CheckBox Content="{Binding Source={StaticResource xDoc}, XPath=target/antcall/@target, Path=Value, Converter={StaticResource UnderscoresConverter}}"/>
И не забывайте о конвертере, который заменяет подчеркивания (также поместите его в ресурсы, как я делал выше):
public class UnderscoresConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.ToString().Replace('_', ' ');
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
EDITED
Рассмотрим более сложный случай. Наш XML-документ выглядит так:
<?xml version="1.0" standalone="yes"?>
<targets>
<target name="main" depends="init">
<antcall target="Exec_Install_abc" />
</target>
<target name="main" depends="init">
<antcall target="Ololo_jesus_christ" />
</target>
<target name="main" depends="init">
<antcall target="One_____more target" />
</target>
</targets>
Теперь у нас много целей и нам нужно создать много флажков. Хорошо, нам нужен ItemsControl. ItemsSource для нашего ItemsControl будет набором атрибутов target , выбранных из antcall узлов (объектов XmlAttribute). Затем мы определяем DataTemplate, помещаем в него CheckBox и привязываем свойство Content к свойству Value через конвертер, который удаляет символы подчеркивания.
Несмотря на кажущуюся сложность, код результата довольно прост:
<ItemsControl ItemsSource="{Binding Source={StaticResource xDoc}, XPath=targets/target/antcall/@target}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Path=Value, Converter={StaticResource UnderscoresConverter}}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>