2015-05-30 3 views
0

Итак, вот моя проблема: Я ищу, чтобы найти связанную строку с именем «id» из выбранного элемента в моем списке. Вот мой .xaml:Как я могу получить элемент, связанный с выбранным элементом списка?

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

И мой C#, который посылает данные для заполнения ListBox:

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()});         
} 

Я пробовал различные различные сценарии, но ничего не работает еще:/

ответ

0

На самом деле я нашел способ более простой способ получить эту работу (спасибо за вашу помощь в любом случае):

Article selectedArticle = lstView.SelectedItem as Article; 

А потом получить любую строку привязываться к этому элементу вы называете:

selectedArticle.nameofthebindedstring    
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; 
    } 
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.

Смежные вопросы