與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 Error: 40 : BindingExpression path error: '[]' property not found on 'object' ''HashSet'1' (HashCode=37425772)'. BindingExpression:Path=Orders[0].OrderDate; DataItem='Customer_<BigLongIdentityString>' (HashCode=21972018); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
。看着他鏈接到的msdn文章,我試着用方括號(根據附加屬性)和使用斜槓(至於何時源是集合)包裝表達式。並不意外,這些也失敗了。
有人可以告訴我我是如何到相關集合中的第一個項目的財產?
首先是擴展方法,即'Orders.First()。OrderDate'? – StuartLC 2015-03-25 04:48:16
@StuartLC好主意,但沒有。同樣的錯誤信息:'BindingExpression路徑錯誤:''''''上沒有找到'First()'屬性 – mcalex 2015-03-25 04:57:23
@LynnCrumbling我沒有看到那一個。我不知道如何將HashSet更改爲集合,因爲它是所有EF魔術(我一般都堅持ObservableCollection),但是這個答案加上你的第一個評論看起來像是我的問題的答案:在VM中創建一個屬性具有來自HashSet的最早日期的訂單。你想回答你的意見,我會接受嗎? – mcalex 2015-03-25 05:05:06