首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TabControl在TabControl WPF中

TabControl在TabControl WPF中
EN

Stack Overflow用户
提问于 2020-10-15 16:56:10
回答 1查看 534关注 0票数 1

我正在尝试创建水平选项卡,使用WPF动态加载垂直选项卡,如下所示。我想要创建类似的东西,这不是我的应用程序的屏幕截图。

似乎我无法在选项卡项中创建选项卡控件。

我的XAML文件有以下代码,我试图在选项卡的内容中添加一个TabControl

代码语言:javascript
运行
复制
<Grid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
   <TabControl ItemsSource="{Binding Tabs}">
      <TabControl.ItemTemplate>
         <!-- this is the header template-->
         <DataTemplate>
            <TextBlock Text="{Binding Header}" />
         </DataTemplate>
      </TabControl.ItemTemplate>
      <TabControl.ContentTemplate>
         <!-- this is the body of the TabItem template-->
         <DataTemplate>
            <TabControl ItemsSource="{Binding steps}">
               <TabControl.ItemTemplate>
                  <!-- this is the header template-->
                  <DataTemplate>
                     <TextBlock Text="{Binding Header}" />
                  </DataTemplate>
               </TabControl.ItemTemplate>
               <TabControl.ContentTemplate>
                  <!-- this is the body of the TabItem template-->
                  <DataTemplate>
                     <TextBlock Text="{Binding Content}" />
                  </DataTemplate>
               </TabControl.ContentTemplate>
            </TabControl>

            <TextBlock Text="{Binding Content}" />
         </DataTemplate>
      </TabControl.ContentTemplate>
   </TabControl>
</Grid>

我的C#代码包括以下对象:

代码语言:javascript
运行
复制
public ObservableCollection<TabItem> Tabs { get; set; }

public AddElement()
{
   Steps step = new Steps();
   step.display = "1";

   Steps step2 = new Steps();
   step.display = "2";

   ObservableCollection<Steps> stepsList = new ObservableCollection<Steps>();
   stepsList.Add(step);
   stepsList.Add(step2);

   Tabs = new ObservableCollection<TabItem>();
   Tabs.Add(new TabItem { Header = "One", Content = "One's content", Steps = stepsList });
   Tabs.Add(new TabItem { Header = "Two", Content = "Two's content" });

}

public sealed class TabItem
{
   public string Header { get; set; }
   public string Content { get; set; }
   public ObservableCollection<Steps> Steps { get; set; }
}

public class Steps
{
   public string display { get; set; }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-16 09:32:19

代码中存在多个问题,您需要修复这些问题才能使其按预期工作。

  • Steps属性的绑定中有一个错误。它必须以大写字母开头。

  • 从XAML中删除最后一个,或者将其放入Grid中,如下所示。实际上,代码不会编译,因为您只能将单个元素设置为DataTemplate中的内容。

  • 绑定到XAML中Steps项的HeaderContent属性。此类型不具有任何这些属性,只有display。您可以引入这些属性并删除display

公共类步骤{公共字符串头{ get;set;}公共字符串内容{ get;set;}

  • In AddElement您只修改step实例,而不是step2,因此它将为空。初始化这两个属性,例如使用上述附加属性。

步骤步骤=新步骤();step.Header =“头1";step.Content =”内容1";步骤step2 =新步骤();步骤2.header=“头2";步骤2内容=”内容2";

  • 如果希望在左侧垂直显示内部TabControl的选项卡条,则必须相应地设置TabStripPlacement属性。

结果将与默认的WPF样式类似。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64376365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档