[英]How can I get a listbox's selected item binded element?
所以这是我的问题:我想从列表框中的选定元素中找到名为“ 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()});
}
我尝试了各种不同的方案,但是什么都没有起作用:/
试试下面的代码
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;
}
我假设您没有使用MVVM。
您可以将代码添加到以下Dependency属性及其包装的后面:
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遍历集合。
实际上,我找到了一种更简单的方法来完成此工作(无论如何,感谢您的帮助):
Article selectedArticle = lstView.SelectedItem as Article;
然后将任何字符串绑定到该元素,请调用:
selectedArticle.nameofthebindedstring
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.