2009-11-30 46 views
5

我想綁定到一個集合內的項目,但該項目的索引需要「可變」。 採取以下僞語法例如:是一個變量綁定到一個集合項目可能

<TextBlock Text="{Binding Fields[{Binding Pos}]}" /> 

是這樣的可能嗎?如果我的屬性Pos爲1,它應該綁定到集合「Fields」中的第一個項目,並且如果我的Pos爲3,它應該綁定到集合中的第三個項目。我簡化了我的問題到這種情況...

是這樣的可行和如何?

回答

0

爲什麼不使用返回集合中當前項目的屬性並將其綁定到WPF控件?

如:

class myCollection 
{ 

    private string _current; 

    public string CurrrentField 
    { 
     get { return _current; } 
    } 

    // TODO: Set current item to whatever the current item is... 
} 

編輯:

在這種情況下,我認爲你需要創建一個跟蹤你的數據網格的列,並在項目,然後對準一個輔助類,你集合,以便綁定到您的UI的屬性可以正確更新。

首先填滿集合,然後你知道你有多少物品,然後通過輔助類循環通過集合並將物品分配給屬性,然後移動到網格中的下一列等。

我認爲這歸結爲你自己寫一個算法。

+0

因爲我使用集合中的所有元素,但使用不同的綁定。就像我說的,這只是問題本身的簡化。 我在一個數據網格的列中使用它,我希望數據網格的所有列使用相同的模板(但第一列將有一個綁定到字段[0],第二個字段[1]等,我不知道將來會有多少列,這是從數據庫中產生的)。基本上它歸結爲解決上述問題。但感謝您提出這種可能性。 – Jan 2009-11-30 16:32:34

5

是的,這是可能的。你應該實現綁定轉換器,將集合轉換爲集合項目並將索引作爲轉換器參數。然後你會這樣使用它:

<TextBlock Text="{Binding Fields, 
        Converter={StaticResource CollectionToItemConverter, 
        ConverterParameter={Binding Pos}}}" /> 

如果您需要此轉換器的代碼或有關轉換器的其他信息,請發表評論。

希望它有幫助。

+0

謝謝。這聽起來對我很好。 – Jan 2009-12-02 14:12:36

+0

很高興聽到它! =) 不要忘了接受這個答案,如果這爲你工作。 =) – levanovd 2009-12-02 15:05:08

+0

有一天,我會問IValueConverter嫁給我.. – cwap 2009-12-05 22:07:45

1

嘗試閱讀ICollectionView ...它可以幫助你,因爲它可以自動給你的項目索引來綁定你的文本。

相關問題