找回密码
 立即注册

QQ登录

只需一步,快速开始

zxc9089
中级会员   /  发表于:2014-12-10 11:17  /   查看:8729  /  回复:8
C1TabControl 当自定义Item模版后, 即使给各Item设置CanUserClose=true ,tab标签上也不会显示关闭的 ‘x’ 了。请问有什么办法能够解决吗?

代码结构基本如下:
样式:


C1TabControl 标签定义:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

8 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-12-10 13:36:00
沙发
回复 1楼zxc9089的帖子

进行测试的代码如下:
  1. <c1:C1TabControl Name="c1Tab" TabItemClose="InEachTab" TabItemClosing="tabs_TabClosing">

  2.             <c1:C1TabItem Header="Sales Per Month" CanUserPin="True">
  3.                 <local:SalesPerMonth />
  4.             </c1:C1TabItem>
  5.             <c1:C1TabItem Header="Sales Per Sales Agent">
  6.                 <local:SalesPerAgents />
  7.             </c1:C1TabItem>
  8.             <c1:C1TabItem Header="Sales Agents">
  9.                 <local:SalesAgents />
  10.             </c1:C1TabItem>
  11.             <c1:C1TabItem Header="Report Summary" CanUserPin="True">
  12.                 <local:ReportSummary />
  13.             </c1:C1TabItem>
  14.             <!-- New Tab Item -->
  15.             <c1:C1TabItem IsSelectable="False" CanUserClose="False" PreviewMouseLeftButtonDown="C1TabItem_MouseLeftButtonDown" Header="New">
  16.                 <c1:C1TabItem.HeaderTemplate>
  17.                     <DataTemplate>
  18.                         <Grid Width="12" Height="12" Margin="2">
  19.                             <Rectangle Fill="White" Height="10" Width="8" HorizontalAlignment="Right" VerticalAlignment="Bottom" />
  20.                             <Rectangle Stroke="#FF111111" Height="10" Width="8" HorizontalAlignment="Right" VerticalAlignment="Bottom" Opacity="0.5" />
  21.                             <Path Width="7" Height="7" HorizontalAlignment="Left" VerticalAlignment="Top" Data="M3.5,0 C3.77,0 4,0.44 4,1 L4,2.3 L4.9,1.38 C5.3,0.99 5.78,0.83 5.97,1 C6.17,1.2 6,1.7 5.6,2 L4.7,3 L6,3 C6.5,3 7,3.2 7,3.5 C7,3.77 6.55,4 6,4 L4.7,4 L5.6,4.9 C6,5.3 6.17,5.78 5.9,5.97 C5.78,6.17 5.3,6 4.9,5.6 L4,4.7 L4,6 C4,6.5 3.78,7 3.5,7 C3.2,7 3,6.5 3,6 L3,4.7 L2,5.6 C1.7,6 1.2,6.17 1,5.98 C0.83,5.78 0.99,5.3 1.38,4.9 L2.3,4 L1,4 C0.45,4 0,3.78 0,3.5 C0,3.2 0.45,3 1,3 L2.3,3 L1.38,2.08 C0.99,1.7 0.83,1.2 1,1 C1.2,0.83 1.7,0.99 2.1,1.38 L3,2.3 L3,1 C3,0.45 3.2,0 3.5,0 z">
  22.                                 <Path.Fill>
  23.                                     <RadialGradientBrush>
  24.                                         <GradientStop Color="#FFFFA800" Offset="0" />
  25.                                         <GradientStop Color="#FFD69200" Offset="1" />
  26.                                     </RadialGradientBrush>
  27.                                 </Path.Fill>
  28.                             </Path>
  29.                         </Grid>
  30.                     </DataTemplate>
  31.                 </c1:C1TabItem.HeaderTemplate>
  32.             </c1:C1TabItem>

  33.         </c1:C1TabControl>
复制代码

你好,进行测试closebutton依然可以显示。请参考下代码对你的Demo是否有提示作用。
如果依然有问题,请及时联系我。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zxc9089
中级会员   /  发表于:2014-12-10 14:50:00
板凳
回复 2楼Alice的帖子

因为我的tabitem是根据其他按钮点击动态添加的。所以我在资源文件里面单独针对tabitem写了一个模版。在后台代码添加tabitem到tabcontrol中的时候手动把这个资源文件里面定义的样式赋给新实例化的tabitem。所以这种情况下 关闭按钮就不见了。

  1. <Style x:Key="TabItemStyle" TargetType="{x:Type c1:C1TabItem}">
  2.     <Setter Property="Template">
  3.         <Setter.Value>
  4.             <ControlTemplate TargetType="{x:Type c1:C1TabItem}">
  5.                 <Grid Margin="3,3,0,0">
  6.                     <Grid.ContextMenu>
  7.                         <ContextMenu>
  8.                             <MenuItem Header="关闭当前标签" Click="MenuItem_Click"/>
  9.                             <MenuItem Header="关闭其他标签" Click="MenuItem_Click" />
  10.                             <MenuItem Header="关闭所有标签" Click="MenuItem_Click" />
  11.                             <MenuItem Header="刷新" Click="MenuItem_Click" />
  12.                         </ContextMenu>
  13.                     </Grid.ContextMenu>
  14.                     <!-- 主Border -->
  15.                     <Border Name="bd"
  16.                             Background="#f5f6f7"                           
  17.                             Height="21"
  18.                             Padding="7,0,7,0"
  19.                             BorderBrush="#b5bac0"
  20.                             BorderThickness="1,1,1,0"
  21.                             CornerRadius="4,4,0,0">
  22.                         <WrapPanel Orientation="Horizontal">
  23.                             <TextBlock  Name="tbd" HorizontalAlignment="Left" Text="{TemplateBinding Header}" Foreground="#333" Margin="0,2,0,0"></TextBlock>
  24.                             <TextBlock   Name="tbdclose" HorizontalAlignment="Right"  Text="x" Foreground="#333" Visibility="{TemplateBinding CanUserClose}" Margin="5,0,0,0" PreviewMouseUp="tbdclose_MouseUp"></TextBlock>
  25.                         </WrapPanel>
  26.                     </Border>
  27.                 </Grid>
  28.                 <ControlTemplate.Triggers>
  29.                     <Trigger Property="IsSelected" Value="True">
  30.                         <Setter TargetName="bd" Property="BorderBrush" Value="#157fcc" />
  31.                         <Setter TargetName="bd" Property="Background" Value="#3892d3" />
  32.                         <Setter TargetName="tbd" Property="Foreground" Value="#fff" />
  33.                         <Setter TargetName="tbdclose" Property="Foreground" Value="#fff" />
  34.                     </Trigger>

  35.                     <Trigger Property="IsMouseOver" Value="True">
  36.                         <Setter TargetName="bd" Property="BorderBrush" Value="#157fcc" />
  37.                         <Setter TargetName="bd" Property="Background" Value="#3892d3" />
  38.                         <Setter TargetName="tbd" Property="Foreground" Value="#fff" />
  39.                         <Setter TargetName="tbdclose" Property="Foreground" Value="#fff" />
  40.                     </Trigger>
  41.                 </ControlTemplate.Triggers>
  42.             </ControlTemplate>
  43.         </Setter.Value>
  44.     </Setter>
  45. </Style>
复制代码


  1. <c1:C1TabControl  Padding="0" Grid.Row="1" BorderThickness="0,3,0,0" BorderBrush="#3892d3" HorizontalAlignment="Stretch" Name="c1tabctlUser" VerticalAlignment="Stretch" TabStripPlacement="Top" TabItemClose="InEachTab">
  2.        <c1:C1TabItem  Style="{StaticResource TabItemStyle}" Header="主控台"  x:Name="mainTab" ToolTip="主控台" Height="26" IsEnabled="True" IsSelected="True" CanUserClose="True" Margin="10 0 0 0">   
  3.        </c1:C1TabItem>
  4. </c1:C1TabControl>
复制代码
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-10 19:05:00
地板
回复 3楼zxc9089的帖子

根据你的代码,在Style里面重写了Template,所以close按钮的部分被你重写了。你需要自己在里面重写CloseButton,比如添加个Button,然后处理该事件。

我2楼给你的代码是仅仅对Header部分的Template进行更改,你可以根据你的需求,使用这个结构更改你的Header部分的Template。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zxc9089
中级会员   /  发表于:2014-12-11 16:29:00
5#
回复 4楼Alice的帖子

嗯,那么重写的时候关闭tab的处理也是要自己定义事件进行处理吗? 还是可以有什么方法直接绑定它的默认处理方法呢?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-11 18:46:00
6#
回复 5楼zxc9089的帖子

你好,根据需求,如果重写Template,的确需要重写事件去处理的。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zxc9089
中级会员   /  发表于:2014-12-12 16:07:00
7#
好的。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-12-12 18:07:00
8#
回复 7楼zxc9089的帖子

请问这个问题进展如何?如果有需要我们这边协助的地方请继续跟帖。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2014-12-12 18:10:00
9#
本帖已关闭。如果您有其他问题,欢迎开新贴提出。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部