2012-02-15 54 views
0

我有一個具有ItemsControl的UserControl。這個ItemsControl綁定到一個對象列表。要顯示這些對象,我有* DataTemplate * s確定如何呈現對象。迭代動態生成的控件並獲得某些屬性

我希望能夠檢索控件的當前值,如文本(如果它是一個文本框)或SelectedItem(如果它是一個組合框)。

如何迭代這些動態生成的控件?我不知道控件的名稱,因爲它們是在運行時生成的。

謝謝..

回答

1

爲什麼我能想到的除了搜索可視化樹的控制和他們的模板屬性最簡單的可能是ItemsControl的數據源到一個ObservableCollection綁定。這就是爲什麼你可以動態添加任何類型的控件到列表中。

一旦你這樣做,你可以很容易地檢查列表中每個UIElement的類型。例如;如果它是一個文本框,然後通過強制轉換等方式獲取文本屬性。

+0

是的,實際上我已經將ItemsControl源綁定到List ..我認爲這仍然是一個ObservableCollection的權利?如何檢查ItemsControl列表中的UIElement? ItemsControl.Items只給我的列表來源..它不給我的控件在ItemsControl .. – krebstar 2012-02-15 08:53:28

+1

首先,我建議ObservableCollection的原因是,ObservableCollection實現INotifyPropertyChanged接口,所以當列表中的項目更改(刪除/添加),它會更新您綁定列表的任何元素。通常情況下,您可以將ItemsControl.datasource或ItemsControl.items(我不知道在我的頭頂)將其轉換爲任何元素類型。但是,我建議您使用您設置綁定的實際列表元素。這樣,它就會遵循MVVM設計模式,並在構建更復雜的應用程序時讓您的生活更輕鬆。 – 2012-02-15 09:00:23

+0

嗯..這是有道理..但我不知道如何適應它到我到目前爲止。我有一個基本上只是告訴我的控件如何呈現用戶界面的對象列表。例如,我有一個具有displayname成員的對象以及要顯示的字符串(選項)列表。用戶控件將其顯示爲組合框。該對象沒有用於設置所選項目的字段。如果是這樣,我仍然不知道如何將選定的項綁定到它:S Hoo男孩這是如此令人困惑:S – krebstar 2012-02-15 09:16:24

相關問題