带选项卡控件的WPF用户控件

时间:2013-05-20 17:30:27

标签: c# wpf xaml

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

我的问题是,如何通过用户控件公开标签控件,以便我们添加标签?

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

命令按钮可配置为dependencyproperties,因此我们可以选择在使用usercontrol时显示应用按钮。我是一个严格意义上的设计师,而不是开发人员,所以我试图让自己的脚在建立这种控制之下,但我有点过头了。

我正在努力完成我正在努力完成的XAML没有问题,只是很难让它重复使用。


到目前为止我尝试过的更多细节(尚未在答案中尝试过任何内容)。

我尝试添加一个dependencyproperty,它将公开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无法识别或无法访问。我将尝试下面提供的解决方案。

2 个答案:

答案 0 :(得分:1)

  

我的问题是,如何通过用户控件公开标签控件,以便我们添加标签?

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

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

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

public ItemCollection Items
{
    get { return this.tabControl.Items; }
}

答案 1 :(得分:0)

我为您提供了一个示例,用于在Tab控件中打开一个页面,希望它有所帮助:

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