我有一個數據源('SampleAppearanceDefinitions'),它包含一個集合('Definitions')。集合中的每個項目都有幾個屬性,包括Color,這是我在這裏感興趣的。WPF - 動態訪問XAML中集合的特定項目
我希望在XAML中將集合中特定項目的顏色顯示爲文本。我可以做到這一點就好用下面這段代碼...
Text="{Binding Source={StaticResource SampleAppearanceDefinitions}, Path=Definitions[0].Color}"
唯一的問題是,這需要我硬編碼定義集合中的項目的索引(我在這個例子中使用0以上)。我想要做的事實上是從我當前的DataContext('AppearanceID')中的屬性中獲取該值。有人可能會想象正確的代碼看起來像這樣......
Text="{Binding Source={StaticResource SampleAppearanceDefinitions}, Path=Definitions[{Binding AppearanceID}].Color}"
......但當然,這是錯誤的。
任何人都可以告訴我做正確的方法是什麼?僅在XAML中可能嗎?感覺應該是這樣,但我無法解決或找到如何去做。
任何幫助將不勝感激!
謝謝!
AT
它將如何與TwoWay綁定工作? – Pragmateek 2010-06-01 12:49:39
如果您希望多個數據可用於您的價值,您可以使用MultiBinding而不是普通的Binding;對於雙向綁定,您將不得不在ConvertBack方法中提供一些邏輯。 – Arcturus 2010-06-02 06:52:56
準確地說,這個實現看起來並不明顯:檢索哪個對象是集合,哪個集合以及哪個索引的邊界值是棘手的;如果它存在於多個集合中呢?轉換器需要更多的上下文:我想這個上下文可以通過ConverterParameter傳遞,但是產生的Xaml可能很重。你能提供一個簡單的實現嗎?謝謝。 – Pragmateek 2010-06-02 09:03:47