我想綁定到一個集合內的項目,但該項目的索引需要「可變」。 採取以下僞語法例如:是一個變量綁定到一個集合項目可能
<TextBlock Text="{Binding Fields[{Binding Pos}]}" />
是這樣的可能嗎?如果我的屬性Pos爲1,它應該綁定到集合「Fields」中的第一個項目,並且如果我的Pos爲3,它應該綁定到集合中的第三個項目。我簡化了我的問題到這種情況...
是這樣的可行和如何?
我想綁定到一個集合內的項目,但該項目的索引需要「可變」。 採取以下僞語法例如:是一個變量綁定到一個集合項目可能
<TextBlock Text="{Binding Fields[{Binding Pos}]}" />
是這樣的可能嗎?如果我的屬性Pos爲1,它應該綁定到集合「Fields」中的第一個項目,並且如果我的Pos爲3,它應該綁定到集合中的第三個項目。我簡化了我的問題到這種情況...
是這樣的可行和如何?
爲什麼不使用返回集合中當前項目的屬性並將其綁定到WPF控件?
如:
class myCollection
{
private string _current;
public string CurrrentField
{
get { return _current; }
}
// TODO: Set current item to whatever the current item is...
}
編輯:
在這種情況下,我認爲你需要創建一個跟蹤你的數據網格的列,並在項目,然後對準一個輔助類,你集合,以便綁定到您的UI的屬性可以正確更新。
首先填滿集合,然後你知道你有多少物品,然後通過輔助類循環通過集合並將物品分配給屬性,然後移動到網格中的下一列等。
我認爲這歸結爲你自己寫一個算法。
是的,這是可能的。你應該實現綁定轉換器,將集合轉換爲集合項目並將索引作爲轉換器參數。然後你會這樣使用它:
<TextBlock Text="{Binding Fields,
Converter={StaticResource CollectionToItemConverter,
ConverterParameter={Binding Pos}}}" />
如果您需要此轉換器的代碼或有關轉換器的其他信息,請發表評論。
希望它有幫助。
嘗試閱讀ICollectionView ...它可以幫助你,因爲它可以自動給你的項目索引來綁定你的文本。
因爲我使用集合中的所有元素,但使用不同的綁定。就像我說的,這只是問題本身的簡化。 我在一個數據網格的列中使用它,我希望數據網格的所有列使用相同的模板(但第一列將有一個綁定到字段[0],第二個字段[1]等,我不知道將來會有多少列,這是從數據庫中產生的)。基本上它歸結爲解決上述問題。但感謝您提出這種可能性。 – Jan 2009-11-30 16:32:34