1

我正在尝试创建一个包含选项卡控件的用户控件。

我的问题是,如何通过用户控件公开选项卡控件以便我们可以添加选项卡?

整个控件将包含三个区域:顶部的命令按钮、选项卡控件和显示消息的样式文本块。

命令按钮将可配置为依赖属性,因此我们可以在使用用户控件时选择显示或不显示应用按钮。我严格来说是一名设计师而不是开发人员,所以我试图让我的脚湿透来构建这个控件,但我有点过头了。

对于我想要完成的工作,我没有任何问题可以启动 XAML,只是很难使其可重用。


到目前为止我已经尝试过的更多细节(还没有在答案中尝试过任何东西)。

我试图添加一个依赖属性来公开 tabcontrol itemssource 的集合:

public IEnumerable<object> TabSource
    {
        get { return (IEnumerable<object>)GetValue(TabSourceProperty); }
        set { base.SetValue(FunctionPanel.TabSourceProperty, value); }
    }

    public static DependencyProperty TabSourceProperty = DependencyProperty.Register(
         "TabSource",
         typeof(IEnumerable<object>),
         typeof(FunctionPanel));

然后在用户控件 XAML 中绑定到它:

<TabControl Grid.Row="1" ItemsSource="{Binding TabSource}" />

最后,我想像这样在窗口 XAML 中使用它:

<local:FunctionPanel>
  <local:FunctionPanel.TabSource>
    <TabItem Header="Test" />
  </local:FunctionPanel.TabSource>
</local:FunctionPanel>

但这返回的 TabSource 无法识别或无法访问。我将尝试下面提供的解决方案。

4

2 回答 2

1

我的问题是,如何通过用户控件公开选项卡控件以便我们可以添加选项卡?

一个直接的选择是向public用户控件添加一个方法:

public void AddTab(string header)
{
    this.tabControl.Items.Add(header);
}

另一种选择是Items在用户控件上公开属性:

public ItemCollection Items
{
    get { return this.tabControl.Items; }
}
于 2013-05-20T17:44:29.033 回答
0

我为您提供了在选项卡控件中打开页面的示例,希望对您有所帮助:

public void OpenTabForm(Page oPage)
        {
            try
            {
                Frame oFrame = new Frame();
                oFrame.Content = oPage;

                TabItem myItem = new TabItem();

                myItem.Header = oPage.Name; //give the header text
                myItem.Content = oFrame;

                tbtabMain.Items.Add(myItem);

                tbtabMain.SelectedItem = myItem;
            }
            catch (Exception ex)
            {
                //handle error
            }
        }
于 2013-05-20T17:46:25.370 回答