0
的孩子,我有一個DataTemplate,看起來像這樣一個列表框中:訪問一個ListBoxItem
<ListBox Name="listBox">
<ListBox.ItemTemplate>
<DataTemplate DataType="x:Type local:NumericIconDefinition">
<Grid>
<ComboBox Name="IconComboBox"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我想在後面的代碼獲取ComboBox實例in order to manipulate it。我發現了一個博客貼子,說明獲取的ListBoxItem的過程:
ListBoxItem lbi = (ListBoxItem)listBox.ItemContainerGenerator.ContainerFromIndex(IndexInListBox);
但我不能找到訪問該項目的網格,然後組合框實例的好方法。理想的情況下,建在上面的代碼,我願做這樣的事情:
ComboBox cb = (ComboBox)lbi.GetChildByName("IconComboBox");
我收到錯誤「此操作僅對應用此模板的元素有效。」,lbi.IsInitialized和lbi.isLoaded都報告爲true。是否由您警告過我的模板實例化問題導致的錯誤消息?我怎樣才能確保它的加載? – Mizipzor 2009-10-15 07:48:00
好的,實際上它不是您必須傳遞給FindName方法的ListBoxItem,而是展示數據的ContentPresenter。你可以在FindName方法的MSDN頁面找到一個例子:http://msdn.microsoft.com/en-us/library/system.windows.frameworktemplate.findname.aspx – 2009-10-15 16:49:32
是的,我發現,當谷歌搜索一些更多信息在下午。我計劃明天在這裏發佈一個短代碼片段。至少要將問題作爲個人參考。 – Mizipzor 2009-10-15 21:12:29