所以这是我的问题: 我希望找到名为" 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()});
}
我尝试了各种不同的场景,但还没有任何工作:/
答案 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