为什么我不能像在Winform中那样简单地获取文本?
如果对象被正确取消引用,就可以获取文本...
我想要的只是所选索引的文本。
但是根据你的例子,键值对结构体的ToString()文本应该返回什么? 你有重载ToString()吗?
两个问题需要解决:
1.确定SelectedItem不为空吗? 在访问之前检查该条件。
2.应该将其强制转换为适当的结构(KVP),而不是盲目调用ToString()并引用Key或Value的适当属性。
否则,这里有一些例子。第一个是绑定到字典的列表框。
myDictionary = new Dictionary<string, string>()
{
{"Alpha", "The First Letter"},
{"Beta", "The Second Letter"},
{"Omega", "Omega Letter"},
};
当用户选择每个项目时,键和值会显示在列表框下方的文本框中:
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");