如何获取列表框的所选项目绑定元素?

时间:2015-05-30 15:04:25

标签: c# xaml listbox windows-phone-8.1

所以这是我的问题: 我希望找到名为" id"的绑定字符串;来自我的列表框中的选定元素。 这是我的.xaml:

<ListBox Name="lstView">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid/>                                   
                <TextBlock Text="{Binding id}"/>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

我的c#发送数据以填充列表框:

var articles = root.data.movies.Select(m => new Article { Name = m.title, ImagePath = m.medium_cover_image, Year = m.year.ToString() }).ToList();
foreach (Article s in articles)
{
    this.lstView.Items.Add(new Article {id = m.id.ToString()});                                   
}

我尝试了各种不同的场景,但还没有任何工作:/

3 个答案:

答案 0 :(得分:0)

尝试以下代码

    if(lstView.SelectedItems.Count=0)
    {
      return;
    }
    var selectedItem=lstView.SelectedItem[0] as FrameWorkElement;
    var itemDataContext=selectedItem.DataContext as Article;
    if(itemDataContext!=null)
    {
        //do what you like with the object
        string idString=itemDataContext.id;
    }

答案 1 :(得分:0)

我假设您没有使用MVVM。

您可以在以下依赖项属性及其包装器后面添加代码:

    public Article SelectedArticle
    {
        get { return (Article)GetValue(SelectedArticleProperty); }
        set { SetValue(SelectedArticleProperty, value); }
    }

    // Using a DependencyProperty as the backing store for SelectedArticle.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty SelectedArticleProperty =
        DependencyProperty.Register("SelectedArticle", typeof(Article), typeof(MainWindow), new PropertyMetadata(null));

在ListBox上添加

SelectedItem="{Binding SelectedArticle}"

每次更改选择时,都会通知SelectedArticle,您将能够轻松访问您的房产。

但是尝试使用数据绑定到ObservableCollection而不是使用foreach迭代你的集合。

答案 2 :(得分:0)

实际上我找到了一种更简单的方法来实现这一点(感谢您的帮助):

Article selectedArticle = lstView.SelectedItem as Article;

然后将任何字符串绑定到您调用的元素:

selectedArticle.nameofthebindedstring