我在从列表框中的绑定(bind)文本 block 获取字符串时遇到问题,当我使用下面的代码时,我可以绑定(bind)列表框并且列表框显示了项目,但是当单击列表中的项目时我没有得到正确的字符串,我打印了一个消息框,其中包含对象名称的消息,例如
"MyApp.Item"
出现了。 myApp 是应用程序的名称,Item 是我绑定(bind)到列表框的模型的名称。当列表框未绑定(bind)时,所选项目的正确文本会显示。
private void listBoxtrend_Tap(object sender, GestureEventArgs e)
{
selectedText = "";
selectedText = listBox.SelectedValue.ToString();
MessageBox.Show(selectedText);
}
xml
<ListBox ItemsSource="{Binding Item}" Foreground="RoyalBlue"
Height="395" HorizontalAlignment="Center"
Margin="12,111,0,0" Name="listBox"
VerticalAlignment="Top" Width="438"
TabIndex="10" Tap="listBox_Tap" >
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock TextWrapping="Wrap" FontSize="26" HorizontalAlignment="Left"
Name="tblItem" Text="{Binding ItemString}"
VerticalAlignment="Top" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
如果你能帮助我,我将不胜感激
最佳答案
您要绑定(bind)到 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 设置为将在上面的第三行中被覆盖的空字符串。我想保留它,以便您了解我在您的代码中所做的更改。
关于c# - 从绑定(bind)的 ListBox 中获取选定的项目字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9200945/