2
我試圖訪問ItemsPanelTemplate內的Canvas對象,所以我可以直接在代碼隱藏中添加項目。如何從代碼隱藏中訪問我的ItemPanelTemplate中的命名控件?
這是我的XAML:
<ListBox x:Name="MyMap" ItemsSource="{Binding MapItems}"
Background="Gray"
SelectionChanged="MyMap_SelectionChanged">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas x:Name="MyMapCanvas"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Background="Transparent">
</Canvas>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
如何訪問「MyMapCanvas」中的代碼隱藏項補充呢?
我曾嘗試以下:
Canvas canvas = (Canvas)MyMap.ItemsPanel.LoadContent();
和
ContentPresenter cp = (ContentPresenter)(VisualTreeHelper.GetChild(MyMap, 0));
ItemsPanelTemplate ipt = MyMap.ItemsPanel;
Canvas canvas = ipt.FindName("MyMapCanvas", cp) as Canvas;
在此先感謝。
謝謝,它的工作原理。不幸的是,它不會讓我將東西添加到ItemsPanelTemplate中的Canvas,這對於大多數用途來說是有意義的。錯誤:無法顯式修改用作ItemsControl的ItemsPanel的Panel的Children集合。 ItemsControl爲Panel生成子元素。看起來我會修改我的方法。 – Paxenos 2011-02-17 14:58:45