C# 为什么';我的样式切换按钮不能在TabControl的第二个选项卡上工作吗?

C# 为什么';我的样式切换按钮不能在TabControl的第二个选项卡上工作吗?,c#,wpf,datagrid,tabcontrol,C#,Wpf,Datagrid,Tabcontrol,我在使用TabControl对象开发WPF应用程序时遇到了一个问题。我试着调试并找到问题,最后我得到了它,但我没有找到任何解决办法。以下是一些解释: 我使用了这个数据网格过滤库(),这是最好的(从我的观点来看)。我想用google material design主题对其进行定制,并更改一些图形功能,例如在data gird的第一个选项卡标题中使用切换按钮来隐藏/显示过滤选项 我创建了一个用户控件,并将自定义数据网格放在其中。然后我将该控件嵌入到tabItem中。当我将此控件设置为第一个tabIt

我在使用TabControl对象开发WPF应用程序时遇到了一个问题。我试着调试并找到问题,最后我得到了它,但我没有找到任何解决办法。以下是一些解释:

我使用了这个数据网格过滤库(),这是最好的(从我的观点来看)。我想用google material design主题对其进行定制,并更改一些图形功能,例如在data gird的第一个选项卡标题中使用切换按钮来隐藏/显示过滤选项

我创建了一个用户控件,并将自定义数据网格放在其中。然后我将该控件嵌入到tabItem中。当我将此控件设置为第一个tabItem时,一切正常。但是,当我将用户控件更改为其他选项卡项时,切换按钮不起作用

以下是我的主窗口xaml代码,该代码不起作用:

 <TabControl x:Name="tabControl">
        <TabItem Header="1'st Tab">
            <ContentControl DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType={x:Type Window}}}">
                <Button Content="Do no thing"></Button>
            </ContentControl>
        </TabItem>
        <TabItem Header="2'nd Tab">
            <ContentControl DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType={x:Type Window}}}">
                <local:UserControl1/>
            </ContentControl>
        </TabItem>
 </TabControl>

请注意,如果我更改TabItems的顺序,它会很好地工作。有人对如何解决这个问题有什么建议吗

编辑:今天,我用“WPF检查器”测试我的应用程序,以找到可视化和逻辑树的结构。这种行为太奇怪了,因为当我将“WPF检查器”附加到我的应用程序时,一切都开始工作了。下面的GIF是我所做的:


对数据对象使用
ContentControl
时,如果是数据上下文,则将
Content
属性绑定到数据对象,并指定
DataTemplate
属性。在这种情况下,
DataTemplate
中的内容将其
DataContext
设置为您的数据对象

以下是一个工作示例:

    <TabControl x:Name="tabControl">
        <TabItem Header="1'st Tab">
            <ContentControl Content="{Binding .}">
                <ContentControl.ContentTemplate>
                    <DataTemplate>
                        <Button Content="Do no thing"></Button>
                    </DataTemplate>
                </ContentControl.ContentTemplate>
            </ContentControl>
        </TabItem>
        <TabItem Header="2'nd Tab">
            <ContentControl Content="{Binding .}">
                <ContentControl.ContentTemplate>
                    <DataTemplate>
                        <local:UserControl1/>
                    </DataTemplate>
                </ContentControl.ContentTemplate>
            </ContentControl>
        </TabItem>
    </TabControl>


欢迎来到SO!我改变了你问题的标题。请参阅以了解是否应在问题标题中使用标记。您还应该向我们提供一个链接,而不仅仅是发布到外部代码的链接。这两个代码之间没有区别。您应该只更改TabControl中TabItem的顺序。不过,我将添加一些代码行。谢谢你的提议。