WPF如何自定义TabControl控件样式示例详解

2019-12-30 19:18:56刘景俊

这里面使用了一个close的图标

wpf,tabcontrol控件,tabcontrol,样式

TabControl的图标可设置可不设置,看自己需要。

这里面还用到了前面讲的控件ButtonEx,定义方法我就不重复赘述了。大家可以通过这个链接跳转查看:http://www.easck.com/article/138475.htm。ButtonEx.cs里面还要添加几个方法用来支持关闭TabItem:


protected override void OnClick()
  {
   base.OnClick();
   if (!string.IsNullOrEmpty(Name) && Name == "PART_Close_TabItem")
   {
    TabItemClose itemclose = FindVisualParent<TabItemClose>(this);
    (itemclose.Parent as TabControl).Items.Remove(itemclose);
    RoutedEventArgs args = new RoutedEventArgs(TabItemClose.CloseItemEvent, itemclose);
    itemclose.RaiseEvent(args);
   }
  }

  public static T FindVisualParent<T>(DependencyObject obj) where T : class
  {
   while (obj != null)
   {
    if (obj is T)
     return obj as T;

    obj = VisualTreeHelper.GetParent(obj);
   }
   return null;
  }

引用示例:


<Grid Background="#858586">
    <TabControl Foreground="Black" Width="300" Height="200" Background="Transparent" BorderBrush="Transparent" BorderThickness="0">
     <local:TabItemClose Cursor="Hand" Header="音乐电台" Height="20" Width="100">
      <Grid Background="#aaffffff">
       <TextBlock Text="音乐电台" VerticalAlignment="Center" HorizontalAlignment="Center"/>
      </Grid>
     </local:TabItemClose>
     <local:TabItemClose Cursor="Hand" Header="Mv电台" Height="20" Width="100">
      <Grid Background="#aaffffff">
       <TextBlock Text="Mv电台" VerticalAlignment="Center" HorizontalAlignment="Center"/>
      </Grid>
     </local:TabItemClose>
    </TabControl>
   </Grid>

效果如下:

wpf,tabcontrol控件,tabcontrol,样式

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ASPKU的支持。


注:相关教程知识阅读请移步到c#教程频道。