控制我的TabControl:如何找到的DataTemplate的TabItem的WPF
<TabControl Name="tabControl"
VerticalAlignment="Top"
HorizontalAlignment="Stretch">
<TabControl.Items>
<TabItem x:Name="tab1" Header="ABC">
<TabItem.ContentTemplate>
<DataTemplate>
<ScrollViewer Name="ScrollViewer">
<StackPanel Orientation="Vertical">
<TextBox Name="txt1" HorizontalAlignment="Center" Margin="0,26,0,0" />
<ListBox Name="listBox" DataContext="{Binding Items, Mode=TwoWay}" />
</StackPanel>
</ScrollViewer>
</DataTemplate>
</TabItem.ContentTemplate>
</TabItem>
</TabControl.Items>
</TabControl>
我如何在C#代碼獲得列表框編程?
我試過下面的代碼,顯示爲空。
TabItem myListBoxItem = (TabItem)(tabControl.ItemContainerGenerator.ContainerFromItem(tabControl.SelectedItem));
ContentPresenter myContentPresenter = FindVisualChild<ContentPresenter>(myListBoxItem);
DataTemplate myDataTemplate = myContentPresenter.ContentTemplate;
ListBox listBox = (ListBox)myDataTemplate.FindName("listBox", myContentPresenter);
您還沒有提供良好[mcve]顯示要獲取該對象引用的代碼的上下文。並不是說堆棧溢出在處理這種基本類型的場景方面還沒有很多問題;如果你花一點時間看,我相信你會找到你想要的答案。也就是說,你需要的答案是,你不應該試圖在代碼背後獲取ListBox對象。無論你認爲你想用這個對象做什麼,你都應該通過一個視圖模型來處理,而不是你爲'TabItem'使用的模型。再次,沒有上下文,沒有答案。 –
如果你找不到'ListBox',那麼在'ListBox'的'Loaded'事件上放置一個處理器,然後在該處理器的VS中放置一個斷點,當你將斷點懸停在你的sender參數上時解決方案,然後你會看到可視樹,然後你可以找到'ListBox'。 – XAMlMAX
從哪裏獲得控制權? (構造函數,加載事件,其他事件,...?),並且是包含您的控件當前處於活動狀態的Tab,還是在嘗試查找控件時是否存在其他活動的Tab? – grek40