从绑定的ListBox中获取所选项字符串

我在从列表框中的绑定文本块中获取字符串时遇到问题,当我使用下面的代码时,我可以绑定列表框,列表框中有项目显示,但是当单击列表中的项目时我不会得到正确的字符串,我在消息框中打印一个带有对象名称的消息

“MyApp.Item”

而是显示出来。 myApp是应用程序的名称,Item是我绑定到列表框的模型的名称。 当列表框没有绑定时,所选项目中的正确文本显示出来。

private void listBoxtrend_Tap(object sender, GestureEventArgs e) { selectedText = ""; selectedText = listBox.SelectedValue.ToString(); MessageBox.Show(selectedText); } 

XML

        

如果你能帮助我,我真的很感激

您将绑定到DataTemplate的TextBlock中的ItemString和ListView中的Item Collection。 因此,SelectedValue将是Item类型。 您应该在Tap处理程序中实际执行类似的操作以获取ItemString的值…

 private void listBoxtrend_Tap(object sender, GestureEventArgs e) { selectedText = ""; var selected = listBox.SelectedValue as Item; selectedText = selected.ItemString; MessageBox.Show(selectedText); } 

在您的示例中, ToString正在打印类的名称。 您还可以在Item模型中覆盖ToString,使其成为您想要的字符串。

注意:类型等可能有点偏离,我猜测你的问题中写的内容有点偏差。 此外,无需将selectedText设置为只在上面第三行中覆盖的空字符串。 我想保留它,以便您可以了解我在代码中更改的内容。

这很简单,请尝试以下方法:

 string selectedText = ListBox.GetItemText(ListBox.SelectedItem); 

您还需要将Listbox的SelectedItem设置为某些内容。

 SelectedItem = {Binding SelectedItem} 

并将您的ItemsSource重命名为“Items”,因为这更有意义。

您的代码隐藏中的SelectedItem或您的ViewModel应该包含一个属性:

 public class Item { public string ItemString { get;set; } } 

试试这个…

 string ListBoxConent = ((ListBoxItem)listbox.SelectedItem).Content.ToString(); 

尝试

  listBox.SelectedItem.ToString() 

如果未在ValueMember中指定属性,则SelectedValue将返回对象的ToString方法的结果。