在.cs文件中使用silverlight的自定义Tabcontrol? 在自定义tabitem标头中添加堆栈面板不起作用

如何解决在.cs文件中使用silverlight的自定义Tabcontrol? 在自定义tabitem标头中添加堆栈面板不起作用

| 在Silverlight Tab控件中,我使用xaml完美地添加自定义标签页眉(名称关闭按钮)。 {xaml代码}
<Grid Height=\"559\" Name=\"grid1\" Width=\"953\">
<sdk:TabControl Height=\"391\" HorizontalAlignment=\"Left\" Margin=\"105,57,0\" Name=\"tabControl1\" VerticalAlignment=\"Top\" Width=\"729\">
    <sdk:TabItem  Name=\"tabItem1\" IsTabStop=\"False\">
        <sdk:TabItem.Header>
            <StackPanel Orientation=\"Horizontal\">
                <TextBlock Text=\"New Tab\" Margin=\"1,1,1\" VerticalAlignment=\"Center\" />
                <Button Content=\"X\" />
            </StackPanel>
        </sdk:TabItem.Header>
        <Grid />
    </sdk:TabItem>
</sdk:TabControl>
<Button Content=\"+\" Height=\"23\" HorizontalAlignment=\"Left\" Margin=\"74,0\" Name=\"button1\" VerticalAlignment=\"Top\" Width=\"31\" Click=\"button1_Click\" />
<Button Content=\"-\" Height=\"23\" HorizontalAlignment=\"Left\" Margin=\"12,492,0\" Name=\"button2\" VerticalAlignment=\"Top\" Width=\"31\" Click=\"button2_Click\" Visibility=\"Collapsed\" />
相同的实现尝试使用.cs,但是我可以在新标签页眉内添加堆栈面板 代码供您参考
   StackPanel st = new StackPanel();
            st.Orientation = Orientation.Horizontal;
            TextBlock txtb = new TextBlock();
            txtb.Text = \"test\";
            txtb.Margin = new Thickness(1,1);
            txtb.VerticalAlignment = VerticalAlignment.Center;
            st.Children.Add(txtb);
            Button btn = new Button();
            btn.Content = \"X\";           
            st.Children.Add(btn);         

             tabControl1.Items.Add(new TabItem
            {
                Header =st              

            });
帮我解决这个问题。我需要带有按钮控件的“自定义标签页眉     

解决方法

        您应该设置
tbItem.Header = st
。 tbItem.Content用于定义选项卡的内容,而不是选项卡标题。 您的代码看起来像这样
  StackPanel st = new StackPanel();
  st.Orientation = Orientation.Horizontal;
  TextBlock txtb = new TextBlock();
  txtb.Text = \"New Tab\";
  txtb.Margin = new Thickness(1,1,1);
  txtb.VerticalAlignment = VerticalAlignment.Center;
  st.Children.Add(txtb);
  Button btn = new Button();
  btn.Content = \"X\";      
  st.Children.Add(btn);

  TabItem tbitem = new TabItem();
  // Set the header to the stack panel with the 
  // TextBlock and Button
  tbitem.Header = st;

  // This is where you define the content
  // of the tab page. Here I just added a Grid 
  // as an example.
  tbitem.Content = new Grid(); 

  tabControl1.Items.Add(tbitem);
编辑:这是一个完整的示例 使用TabControl的XAML-注意,我钩住了Loaded事件,在这里将添加动态TabItem。
<UserControl x:Class=\"SilverlightApplication1.MainPage\"
    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"
    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"
    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"
    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"
    xmlns:controls=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls\"
    mc:Ignorable=\"d\"
    d:DesignHeight=\"300\" d:DesignWidth=\"400\" >  
  <Grid x:Name=\"LayoutRoot\" Background=\"White\">
    <Grid x:Name=\"Container\">      
      <controls:TabControl Name=\"tabControl1\" Loaded=\"TabControl_Loaded\">

      </controls:TabControl>
    </Grid>
  </Grid>
</UserControl>
这是背后的代码
using System;
using System.Windows;
using System.Windows.Controls;

namespace SilverlightApplication1
{
  public partial class MainPage : UserControl
  {
    public MainPage()
    {
      InitializeComponent();
    }

    private void TabControl_Loaded(object sender,RoutedEventArgs e)
    {
      StackPanel st = new StackPanel();
      st.Orientation = Orientation.Horizontal;
      TextBlock txtb = new TextBlock();
      txtb.Text = \"New Tab\";
      txtb.Margin = new Thickness(1,1);
      txtb.VerticalAlignment = VerticalAlignment.Center;
      st.Children.Add(txtb);
      Button btn = new Button();
      btn.Content = \"X\";      
      st.Children.Add(btn);

      TabItem tbitem = new TabItem();
      // Set the header to the stack panel with the 
      // TextBlock and Button
      tbitem.Header = st;

      // This is where you define the content
      // of the tab page. Here I just added a Grid 
      // as an example.
      tbitem.Content = new Grid(); 

      tabControl1.Items.Add(tbitem);
    }
  }
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?