почему я не могу просто взять текст, как я сделал в WinForm
Можно ли объект должным образом де-ссылки ....
Все, что я хочу текст выбранного индекса.
Но что должно должно быть ToString()
текст структурной редукции ключевого значения в соответствии с вашим примером? У вас есть ToString()
перегружен?
два вопроса Resolve
- Вы уверены, что SelectedItem не равно нулю? Перед этим обращайтесь к этому условию.
- Нужно бросить в соответствующую структуру (КВП), вместо того, чтобы слепо вызов
ToString()
и ссылки соответствующее свойство либо Key
или Value
.
В противном случае здесь примеры.Первый из них является ListBox привязан к словарю
myDictionary = new Dictionary<string, string>()
{
{"Alpha", "The First Letter"},
{"Beta", "The Second Letter"},
{"Omega", "Omega Letter"},
};
По мере того как пользователь выбирает каждый элемент, ключ и ценность шоу в текстовых полях ниже LISTBOX:
Xaml
<ListBox Name="lbDictionary"
ItemsSource="{Binding myDictionary}"
SelectedValuePath="Key"
DisplayMemberPath="Value"/>
И доступ к ним в текстовых окнах (Я не показываю ярлыки «Ключ», и «Значение» для краткости)
<TextBlock Text="{Binding SelectedItem.Key, ElementName=lbDictionary}"/>
...
<TextBlock Text="{Binding SelectedItem.Value, ElementName=lbDictionary}"/>
Следовательно, для доступа в коде позади для Key
как таковой, Value
бы то же самое:
if (lbDictionary.SelectedItem != null)
MessageBox.Show(((KeyValuePair<string, string>) (lbDictionary.SelectedItem)).Key);
else
MessageBox.Show("Select something");
Если вы можете получить ключ, то почему бы не просто получить значение из словаря? –
В этот момент словарь выходит за рамки. Я загружаю элементы из базы данных SQL. Я использую словарь как временный держатель. Полагаю, я мог бы заставить словарь зацепиться, но почему я не могу просто взять текст, как в winform. – Jeebwise
У LbContractors все еще есть его копия, поскольку она нуждается в ней, поэтому вы всегда можете ее захватить у LbContractors.ItemsSource. Хотя есть, вероятно, лучшее решение, это всего лишь один способ. –