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

时间:2012-02-08 20:32:47

标签: c# windows-phone-7 xaml

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

  

“MyApp.Item”

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

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>

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

5 个答案:

答案 0 :(得分:8)

您绑定到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设置为只在上面第三行中覆盖的空字符串。我想保留它,以便您可以了解我在代码中更改的内容。

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

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

SelectedItem = {Binding SelectedItem}

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

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

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

答案 3 :(得分:1)

试试这个...

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

答案 4 :(得分:0)

尝试

  listBox.SelectedItem.ToString()

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