2011-03-10 22 views
3

父控件中找到控制的FramworkElement.FindName()方法似乎應該直截了當......查找動態生成的WCF控制由FindName()

但我加大了ANTY而且好像該框架不喜歡我想要做的事情。

首先,我意識到有很多不同的做事方式,並牢記這是我在WPF中創建的第一種形式。

我正在根據集合中的項目數將控件加載到StackPanel中。該方法是必須的,因爲集合是由[用戶輸入的Url]內的目錄數決定的。

該列表將水平堆棧面板構建爲設計期間放置在窗體上的垂直堆棧面板。

所以dirStackPanel在窗體上。 我將controlStackPanel插入到dirStackPanel中n次,並用一個標識名稱命名每一個:(string)(「controlStackPanel」+ n)。

我也用控件填充controlStackPanel,但考慮到我無法通過名稱從其父(dirStackPanel)中檢索controlstackPanel,這是一個模擬點。

例如:

var getPanel = (StackPanel) this.dirStackPanel.FindName((string)("controlStackPanel" + n))返回NULL

所以要明確的,那我將在運行時每個控制被分配一個名稱,並可以很容易地使用循環檢索。但FindName方法在父「StackPanel」的第一個子控件上不起作用。它一直返回null而不是對象。

任何想法?

回答

8

如果您正在動態創建控件,則必須先致電RegisterName才能找到它們。

例如:

dirStackPanel.RegisterName(controlStackPanel.Name, controlStackPanel);