как выразить эту привязку к списку данных XAML в коде C # - PullRequest
0 голосов
/ 25 октября 2009
ItemsSource="{Binding Source={StaticResource stringResources}, Path=MyProp}"

Я пытался и получил так далеко, но не скомпилировал:

comboBox.ItemsSource = new Binding { Source = new StringResources(), ElementName = "MyProp" };
comboBox.DisplayMemberPath="Value";
comboBox.SelectedValuePath="Key";

В нем говорится, что он не может конвертировать Binding в IEnumerable, и я не был уверен, как создать PropertyPath, поэтому я использовал ElementName, но я не знаю, является ли это тем же.

StringResources - это класс, у которого есть свойство MyProp, которое возвращает словарь.

1 Ответ

2 голосов
/ 25 октября 2009
var binding = new Binding("MyProp") { Source = new StringResources() };
BindingOperations.SetBinding(comboBox, ComboBox.ItemsSourceProperty, binding);

В качестве альтернативы использованию BindingOperations вы также можете использовать метод SetBinding в классе ComboBox.

В интересах научить вас ловить рыбу ваш код пытался присвоить экземпляр Binding непосредственно свойству ItemsSource (которое принимает объекты только определенных типов, включая IEnumerable). Вам нужно использовать механизм связывания WPF, чтобы преобразовать ваш источник во что-то, что может использовать целевое свойство. В этом случае он переводит или выводит свойство MyProp в экземпляре StringResources в перечисление, которое затем используется свойством ItemsSource.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...