Невозможно установить начальное значение при связывании данных со списком в словарь <char, string> - PullRequest
0 голосов
/ 22 сентября 2009

У меня есть простой словарь, определенный как ResultOptions = new Dictionary<char, string>, и у моей viewmodel есть открытое свойство ResultCode типа char. Мой XAML выглядит следующим образом:

<ComboBox ItemsSource="{Binding ResultOptions}"
                            DisplayMemberPath="Value"
                            SelectedValuePath="Key"
                            SelectedValue="{Binding ResultCode}" /> 

Все работает отлично, за исключением того, что ComboBox никогда не инициализируется на основе значения SelectedValue. Я уверен, что привязка правильная, так как я могу видеть, что ResultCode в viewmodel установлен правильно.

Странная вещь ... если я изменил мою модель, чтобы ResultCode имел тип 'string', а мой словарь был Dictionary<string,string>, тогда поле со списком правильно инициализируется на основе SelectedValue.

Чего мне не хватает? почему привязка к Dictionary<string, string> работает, а привязка к Dictionary<char, string> - нет?

1 Ответ

2 голосов
/ 22 сентября 2009

Разница между этими двумя случаями заключается в том, что char является типом значения, а string является ссылочным типом. Скорее всего, внутренне WPF использует объекты для привязок, и каждый раз, когда char получен, он помещается в новый объект, поэтому проверка равенства ссылок завершается неудачей.

Я бы сказал, просто используйте string в качестве ключа, поскольку нет способа обойти работу бокса.

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