Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在tabItem中获取UserControl_C#_Wpf_User Controls_Datatemplate_Tabitem - Fatal编程技术网

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);