我正在尝试创建一个包含选项卡控件的用户控件。
我的问题是,如何通过用户控件公开标签控件,以便我们添加标签?
整个控件将包含三个区域:顶部的命令按钮,选项卡控件以及显示消息的样式化文本块。
命令按钮可配置为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无法识别或无法访问。我将尝试下面提供的解决方案。
答案 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
}
}