C# 从主窗口的子选项卡访问主窗口属性

C# 从主窗口的子选项卡访问主窗口属性,c#,wpf,xaml,tabcontrol,C#,Wpf,Xaml,Tabcontrol,我希望能够从其TabControl页面中访问窗口的公共成员。为此,我尝试从使用XAML切换到: <TabControl TabStripPlacement="Left" HorizontalContentAlignment="Left" Name="wizardTabs"> <TabItem Header="Login"> <Frame Source="LoginPage.xaml" IsTabStop="False"

我希望能够从其TabControl页面中访问窗口的公共成员。为此,我尝试从使用XAML切换到:

    <TabControl TabStripPlacement="Left" HorizontalContentAlignment="Left" Name="wizardTabs">
        <TabItem Header="Login">
            <Frame Source="LoginPage.xaml" IsTabStop="False"/>
        </TabItem>
    </TabControl>
我在选项卡中使用一个框架,并在框架中加载一个XAML页面。这样,我认为构造函数对我来说是可用的,这样我就可以将this指针传递到Page类中:

        LoginPage loginPage = newFrame.Content as LoginPage;
        loginPage.parent = this;
但我发现加载XAML需要一个空构造函数。另外,newFrame.Content始终为空。我认为这与这个阶段没有加载XAML有关,但我不知道何时会执行XAML加载,如果是以后,我如何设置“父”指针

谢谢你的建议。我是WPF编码新手,请指导我。

看看。可以使用Setter属性将框架绑定到content属性:

<TabControl TabStripPlacement="Left" HorizontalContentAlignment="Left" Name="wizardTabs" ItemsSource= [YourBinding]>
  <TabControl.ItemContainerStyle>
    <Style TargetType="TabItem">        
        <Setter Property="Content" Value="{Binding newFrame}"/>
    </Style>
</TabControl.ItemContainerStyle>
    <TabItem Header="Login">
        <Frame Source="LoginPage.xaml" IsTabStop="False"/>
    </TabItem>
</TabControl>

好的,我找到了一个解决方案。我可以使用Navigate()方法直接使用对象的实例,而不是使用URI,而不用.Source属性。因此,代码如下所示:

newFrame = new Frame();
newFrame.Navigate(new LoginPage(this));
newFrame.IsTabStop = false;
tabItem = new TabItem();
tabItem.Header = "Login";
tabItem.Content = newFrame;
wizardTabs.Items.Add(tabItem);

有什么原因不能使用数据绑定来访问属性吗?它与数据无关——我试图在用户单击选项卡中的特定列表项时更新主窗口上的状态指示器。
newFrame = new Frame();
newFrame.Navigate(new LoginPage(this));
newFrame.IsTabStop = false;
tabItem = new TabItem();
tabItem.Header = "Login";
tabItem.Content = newFrame;
wizardTabs.Items.Add(tabItem);