【问题标题】:Accessing main window properties from its child tabs从其子选项卡访问主窗口属性
【发布时间】:2012-02-02 21:44:55
【问题描述】:

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

    <TabControl TabStripPlacement="Left" HorizontalContentAlignment="Left" Name="wizardTabs">
        <TabItem Header="Login">
            <Frame Source="LoginPage.xaml" IsTabStop="False"/>
        </TabItem>
    </TabControl>

改为基于代码填充选项卡,在主窗口的 Loaded 事件期间

        newFrame = new Frame();
        newFrame.Source = new Uri(@"\LoginPage.xaml", UriKind.Relative);
        newFrame.IsTabStop = false;
        tabItem = new TabItem();
        tabItem.Header = "Login";
        tabItem.Content = newFrame;
        wizardTabs.Items.Add(tabItem);

我在选项卡中使用框架并在框架中加载 XAML 页面。通过这种方式,我认为构造函数可供我使用,以便我可以将 this 指针传递给 Page 类:

        LoginPage loginPage = newFrame.Content as LoginPage;
        loginPage.parent = this;

但我发现加载 XAML 需要一个空的构造函数。此外,newFrame.Content 始终为 NULL。我认为这与在此阶段尚未加载 XAML 的事实有关,但我无法确定何时执行 XAML 加载,如果稍后,我如何设置“父”指针.

感谢您的任何建议。我是新手 WPF 编码器,所以请指导我。

【问题讨论】:

  • 是否有不能使用数据绑定来访问属性的原因?
  • 嗯,它与数据无关——当用户单击选项卡中的特定列表项时,我正在尝试更新主窗口上的状态指示器。

标签: c# wpf xaml tabcontrol


【解决方案1】:

看看this answer。您可以使用 Setter 属性将您的框架绑定到内容属性:

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

【讨论】:

    【解决方案2】:

    好的,我找到了解决方案。我可以使用 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 2019-04-01
      相关资源
      最近更新 更多