C# 在tabItem中获取UserControl
我有一个C# 在tabItem中获取UserControl,c#,wpf,user-controls,datatemplate,tabitem,C#,Wpf,User Controls,Datatemplate,Tabitem,我有一个选项卡控件,带有一个模板,如下所示: <TabControl ItemsSource="{Binding MyItems}" x:Name="tabs"> <TabControl.Resources> <DataTemplate x:Key="contentTemplate" x:Name="contentTemplate" > <other:MyUserControl x:Name="mUserControl" Cus
选项卡控件
,带有一个模板,如下所示:
<TabControl ItemsSource="{Binding MyItems}" x:Name="tabs">
<TabControl.Resources>
<DataTemplate x:Key="contentTemplate" x:Name="contentTemplate" >
<other:MyUserControl x:Name="mUserControl" CustomData="{Binding}"/>
</DataTemplate>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Header" Value="{Binding Name}" />
<Setter Property="ContentTemplate" Value="{StaticResource contentTemplate}"/>
</Style>
</TabControl.Resources>
</TabControl>
但它返回null
我想访问MyUserControl
对象来调用一个函数,该函数将改变它的状态(显示一个控件并隐藏另一个控件)。
当用户单击MenuItem(由主窗口拥有)时会发生这种情况,但受影响的小部件是UserControl
那么,如何获取对
MyUserControl
对象的引用呢?您可以从内部更深的选项卡控件遍历可视化树,并获取其中的所有用户控件
您应该阅读有关visual tree或以下答案的信息:
只是一个注释,但如果设计得当(MVVM),您不应该希望出现这种情况。这很难,因为你打破了模型/视图的分离。我怎么能在不打破模型/视图分离的情况下以正确的方式写这篇文章呢?我同意这几乎肯定不是最好的方法。包括对您试图实现的结果的描述,我们可能会建议更好的解决方案我更新了描述,希望它更清晰谢谢,我会调查的是,这就是我想要的,非常感谢
ControlTemplate dt = tabs.Template;
MyUserControl mControl = (MyUserControl)dt.FindName("mUserControl", tabs);