类似于WPF: How to bind to only one item in a collection, not using ItemsControl since I don’t want to display all of them,不同之处在于集合与主绑定项目相关.所有数据都通过EntityFramework传入.与链接的问题一样,xaml可以最好地解释它:
<StackPanel Grid.Row="1" Orientation="Horizontal" DataContext="{Binding CurrentCustomer}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Total Orders:" />
<TextBlock Text="{Binding Orders.Count}" />
</StackPanel >
<StackPanel Orientation="Horizontal">
<TextBlock Text="First Order:" />
<TextBlock Text="{Binding Orders.First.OrderDate}" />
</StackPanel >
</StackPanel>
如您所见,我猜测由于可以使用’Orders.Count’获得相关订单的计数,因此我尝试使用相同的linq语法来尝试检索Orders.First(我也尝试过Orders.FirstOrDefault),但是这行不通.
查看链接的问题,我尝试了Sheridan的'[]’语法,但是Orders [0] .OrderDate给出了输出错误:System.Windows.Data错误:40:BindingExpression路径错误:在[‘]中找不到'[]’属性object”HashSet’1′(HashCode = 37425772)’. BindingExpression:Path = Orders [0] .OrderDate; DataItem =’Customer_< BigLongIdentityString>‘ (HashCode = 21972018);目标元素是’TextBlock'(Name =”);目标属性是“文本”(类型为“字符串”).
查看他链接到的msdn文章,我尝试将表达式包装在方括号中(根据附加属性),并使用斜杠(对于源是集合时).不出所料,这些也失败了.
有人可以告诉我如何获得相关收藏中的第一件商品的财产吗?
解决方法:
如果可能的话,您总是可以向模型添加一个新属性以公开第一项:
public Order FirstItem
{
get { return this.Orders.First(); }
}
然后,您可以绑定到该新属性.
另外,值为this answer is highly relevant.在这里,哈希集可能不太适合.没有索引器.我通常坚持使用ObservableCollections.
另外,关于与数据绑定兼容的EF生成,请查看this MSDN article.
Updating code generation for data binding
您可以弄乱T4模板,并按照文章进行操作,
Find and replace the first occurrence of “HashSet” with
“ObservableCollection”.
WPF祝您一切顺利.