如何在WPF中的选项卡控件中添加用户控件

时间:2016-04-07 05:13:06

标签: c# wpf tabitem

下面的文章介绍了如何在WPF中创建动态标签,在每个标签中它只会添加一个文本框。

private TabItem AddTabItem()
{
    int count = _tabItems.Count;

    // create new tab item
    TabItem tab = new TabItem();

    tab.Header = string.Format("Tab {0}", count);
    tab.Name = string.Format("tab{0}", count);
    tab.HeaderTemplate = tabDynamic.FindResource("TabHeader") as DataTemplate;

    tab.MouseDoubleClick += new MouseButtonEventHandler(tab_MouseDoubleClick);

    // add controls to tab item, this case I added just a textbox
    TextBox txt = new TextBox();

    txt.Name = "txt";
    tab.Content = txt;
    // insert tab item right before the last (+) tab item
    _tabItems.Insert(count - 1, tab);

    return tab;
}

http://www.codeproject.com/Articles/493538/Add-Remove-Tabs-Dynamically-in-WPF

我可以做些什么来添加一些复杂的控件,使其位置固定而不仅仅是1个文本框?我可以为此目的创建用户控件吗?那么如何将用户控件添加到选项卡控件?

1 个答案:

答案 0 :(得分:3)

尝试接下来的步骤:

  1. 添加用户控件(比如说在ComplexControl.xaml中)

    <UserControl ... >
       <Grid>
           <Rectangle Width="100" Height="100" Fill="Red"/>
        </Grid>
     </UserControl> 
    
  2. 创建一个类

    Public myComplexContolClass
    {
         //....
    }
    
  3. 将它们一起映射,这样当你的应用程序中有一个myComplexContolClass时,它就是来自1的UserControl。地图可以完成 使用DataTemplate:

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                        ...
                        xmlns:models="clr-namespace: ... .Model"
                        xmlns:views="clr-namespace: ... .View"
                        >
    
        <DataTemplate DataType="{x:Type models:myComplexContolClass}">
            <views:ComplexControl/>
        </DataTemplate>
    
    </ResourceDictionary>
    
  4. 或者

        <Window ...
                xmlns:models="clr-namespace: ... .Model"
                xmlns:views="clr-namespace: ... .View"
                >
    
            <Window.Resources>
    
                <DataTemplate DataType="{x:Type models:myComplexContolClass}">
                    <views:ComplexControl/>
                </DataTemplate>
    
            </Window.Resources>
    
            // ...
    
        </Window>
    
    1. 将其添加到您的代码中:

      private TabItem AddTabItem()
      {
          // ...
      
          myComplexContolClass control = new myComplexContolClass();
          tab.Content = control;
      
          // ...
      }