控制我的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