2015-02-19 2 views
0

Чтобы начать, поймите, что я имею дело с динамическим интерфейсом, который генерируется во время выполнения из XML. Я написал XAML, который включает различные элементы и атрибуты для создания соответствующих элементов управления и меток, чтобы отображать данные, содержащиеся в дополненном XML-файле.Как разобрать атрибут XML для привязки WPF

Пример фрагмента XML:

<floop Format="combo" Choices="apple;banana;cherry" Value="cherry"/> 

Формат и значение уже работает. Я ищу способ сделать выбор работы. (Да, это нетрадиционный для XML, но она служит цели сейчас.)

Вот предложенный фрагмент XAML:

<ComboBox Style="{StaticResource ComboButtonStyle}" 
     Width="200" 
     ItemsSource="{Binding [email protected]}" IsEditable="True" 
     /> 

Дело в том, @Choices является одной строки, поэтому я предлагаю для синтаксического анализа строки для получения типа данных ItemsSource хочет.

Как мне добраться отсюда?

ответ

1

Вы хотите использовать конвертер на Binding, чтобы взять его из строки в список. This answer делает наоборот.

Я еще не тестировал этот код, но он должен доставить вас туда, куда вы хотите отправиться.

<ComboBox Style="{StaticResource ComboButtonStyle}" Width="200" ItemsSource="{Binding [email protected], Converter={StaticResource StringToListConverter}}" IsEditable="True" />

[ValueConversion(typeof(string), typeof(List<string>))] 
public class StringToListConverter : IValueConverter 
{ 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (targetType != typeof(List<string>)) 
      throw new InvalidOperationException("The target must be a List<string>"); 

     return new List<string>(((string)value).Split(';')); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

Линия ItemsSource дает ошибку во время выполнения WPF. –

+0

Чтобы исправить это, я добавил в Resounces и изменил ссылку на конвертер на конвертер = {StaticResource stringToListConverter} –

+0

Хорошо, следующая проблема: Convert получает XmlDataCollection и System.Collections. IEnumerable, а не строка и список . Я могу переключать типы на последнем, но что случилось с этим XmlDataCollection? –

Смежные вопросы