WPF TabControl in Binding’s world

首先,TabControl是间接继承自ItemControl的控件,因此可以像ItemControl那样自如的使用。

自此,我们知道了ItemControl的派生控件有:

ItemControl–>Selector–>ListBox

ItemControl–>Selector–>ListBox–>ListView

ItemControl–>Selector–>ComboBox

ItemControl–>Selector–>TabControl

TabControl与ItemControl主要区别多了一个公共显示区域ContentTemplate,该区域可以显示当前选择项的一些特殊信息,因此,我们可以按照如下的形式进行开发。

简单版数据绑定使用

定义数据模型与数据绑定

MainWindow.xaml.cs

/** function: TabControl in DataBinding's world* description: Using TabControl to Binding * author: Mei Liyong*/using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows;namespace Deamon
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();DataContext = new MainWindowModel();}}/// <summary>/// Main window model/// </summary>public class MainWindowModel:NotifyPropertyChanged{private ObservableCollection<DeviceModel> devices;public ObservableCollection<DeviceModel> Devices{get { return devices; }set { devices = value; }}public MainWindowModel(){Devices = new ObservableCollection<DeviceModel>();for (int i = 0; i < 5; i++){Devices.Add(new DeviceModel() { Id = i + 1, Name = "设备" + (i + 1).ToString() });}}}/// <summary>/// Device data model/// </summary>public class DeviceModel: NotifyPropertyChanged{private int id;public int Id{get { return id; }set { id = value; OnPropertyChanged(); }}private string name;public string Name{get { return name; }set { name = value; OnPropertyChanged(); }}}/// <summary>/// Notifies clients that a property value has changed./// </summary>public class NotifyPropertyChanged : INotifyPropertyChanged{public event PropertyChangedEventHandler PropertyChanged;protected void RaisePropertyChanged(string PropertyName){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(PropertyName));}protected void OnPropertyChanged([CallerMemberName] string PropertyName = null){RaisePropertyChanged(PropertyName);}}
}

完成数据绑定

MainWindow.xaml

<Window x:Class="Deamon.MainWindow"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:local="clr-namespace:Deamon"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><TabControl ItemsSource="{Binding Devices}"><TabControl.ItemTemplate><DataTemplate><ContentPresenter Content="{Binding Name}"/></DataTemplate></TabControl.ItemTemplate><TabControl.ContentTemplate><DataTemplate><Grid><DockPanel><StackPanel><WrapPanel><TextBlock Text="编号:"/><TextBlock Text="{Binding Id}"/></WrapPanel><WrapPanel><TextBlock Text="名称:"/><TextBlock Text="{Binding Name}"/></WrapPanel></StackPanel><Polyline Points="15,16 95,110 154,300 125,10 541,95 15,16" Fill="#659BBC12" Stroke="#95100241" StrokeThickness="1"/></DockPanel></Grid></DataTemplate></TabControl.ContentTemplate></TabControl></Grid>
</Window>

控件样式设计跳转到我上一篇博客


积跬步以至千里:) (:一阵没来由的风

WPF TabControl 数据绑定相关推荐

  1. C# WPF TabControl控件用法详解

    概述 TabControl我之前有讲过一节,内容详见:C# WPF TabControl用法指南(精品),上节主要讲解了tabcontrol控件的左右翻页,以及页面筛选,以及数据绑定等内容,这节内容继 ...

  2. WPF TabControl Unload俩次的解决方案

    原文:WPF TabControl Unload俩次的解决方案 WPF中,有些控件会多次触发Unload,有点莫名其妙~ Unload的多次触发 TabControl的内容,我是这么设置的: 在Tab ...

  3. WPF TabControl 美化

    转载来源:http://www.cnblogs.com/xling/p/3595602.html WPF TabControl 美化 文章很详细的说明了怎么做的美化  只是在学习过程中没有代码下载让人 ...

  4. WPF TabControl控件示例

    WPF TabControl控件示例 运行效果: 主窗体XAML代码: <Window x:Class="WPF0417.MainWindow"xmlns="htt ...

  5. html tabcontrol模板,WPF TabControl模板+ ItemContainerStyle

    我正在尝试创建一个基本上看起来像中心顶部的按钮和下面显示tabitem内容的内容面板上的按钮控制样式.WPF TabControl模板+ ItemContainerStyle 我对模板有点新,但到目前 ...

  6. WPF TabControl Styles

    WPF TabControl Styles 水平使用的TabControl 效果: 样式资源 <!-- 顶部TabControl控件样式 --><SolidColorBrush x: ...

  7. 学习WPF: 创建数据绑定目录树

    如果使用了WPF而不使用数据绑定(手工在界面和数据间进行同步),总会感觉不值.但是大部分讨论WPF数据绑定的文章,主题大多集中在ListBox这样平坦的数据集合上,讲如何绑定层次结构数据的比较少,这里 ...

  8. WPF TabControl 隐藏标头

    1. 将每个 TabItem 的 Visibility 属性设置为 Visibility.Collapsed 即可隐藏标头 <TabItem Visibility="Collapsed ...

  9. WPF ListView 数据绑定后,ListViewItem如何拥有ContextMenu

    这个需要重写ListView的Style. 首先在ListView的Style对应位置增加一个ContextMenu的声明: <!--ListViewItem的菜单绑定--><Con ...

最新文章

  1. oracle 分区使用情况,Oracle Hash分区的使用总结
  2. redis 基本信息查询
  3. Luogu 2827 [NOIP2016] 蚯蚓
  4. Java心得--键值、枚举器
  5. was连接oracle rac集群,Oracle集群(RAC)及 jdbc 联接双机数据库
  6. if (argc == 1) 到底有什么作用?
  7. scikit-image安装 from numpy.lib.arraypad import _validate_lengths ImportError: cannot import name ‘_va
  8. mysql+导出当前配置,mysql 查看当前使用的配置文件my.cnf的方法
  9. Android 系统(202)---Android:这是一份全面 amp; 详细的Webview使用攻略
  10. 小红书CTO山丘:用户隐私保护是数据应用的第一前提
  11. avs3 ts格式封装 标准_第480期【软件】吊打格式工厂—高清视频转换器WonderFox HD Video便携版...
  12. SAP BPC最佳实践-BPC安装及配置的常见问题
  13. 【渝粤题库】陕西师范大学500017 基础物理专题(光、近代)作业
  14. mysql CMD命令
  15. 鸿蒙系统首发仪式,鸿蒙系统首发终端荣耀智慧屏正式亮相
  16. css中 background:0 0;
  17. C语言汉诺塔问题的递归算法
  18. 非满管电磁流量计测量平均流速
  19. 吴恩达机器学习18-应用实例:图片文字识别
  20. layui 数字步进器_vue mand-mobile ui Stepper步进器默认值传字符串进去不起作用

热门文章

  1. 【Windows】Word文档中的Endnote“乱码”
  2. 个人日记-电影《心灵奇旅》观后感-20210118
  3. C4D惊喜插件合集,让你瞬间提升工作效率
  4. QT添加GPIB驱动库
  5. 爱丁堡 计算机科学硕士,爱丁堡大学计算机科学硕士申请.pdf
  6. 尹成老师,关于链表的一些操作(C)
  7. 软件架构MVC, MVP, MVVM
  8. 金昌气象APP隐私政策
  9. QQ帝国的衰竭,一场还没开始就注定失败的战争
  10. 用python写一个北京市的个税计算器