Studio for WPF: C1DataGrid 实现 MultiDataTrigger 功能

在本篇文章中,展示了如何实现 C1DataGrid MultiDataTrigger 功能。该功能可以通过前台 XMAL 页面实现,无需任何后台编码,实现根据当前鼠标悬浮单元格内容更改背景色的功能。<img alt="MultiDataTrigger_ChangeBackColor" width="500px" src="http://our.componentone.com/wp-content/uploads/2013/12/MultiDataTrigger_ChangeBackColor.gif">

发布于 2013/12/24 00:00

ComponentOne Enterprise

在本篇文章中,展示了如何实现 C1DataGrid  MultiDataTrigger 功能。该功能可以通过前台 XMAL 页面实现,无需任何后台编码,实现根据当前鼠标悬浮单元格内容更改背景色的功能。

设置 C1DataGrid 数据源

 

  1: public class Person
  2: {
  3:   public string Name { get; set; }
  4:   public string Address { get; set; }
  5: }
  6:   
  7: .......
  8:   
  9: person = new ObservableCollection()
 10: {
 11:   new Person(){Name="Prabhat",Address="India"},
 12:   new Person(){Name="Joe",Address="US"},
 13:   new Person(){Name="John",Address="UK"},
 14:   new Person(){Name="Victor",Address="Europe"},
 15:   new Person(){Name="Fuller",Address="UK"},
 16:   new Person(){Name="Richa",Address="India"},
 17:   new Person(){Name="Dia",Address="Europe"},
 18:   new Person(){Name="Smith",Address="US"}
 19: };
 20: datagrid.ItemsSource = person;

 

实现 MultiDataTrigger

以下 XMAL 实现了根据鼠标悬浮单元格数据更改当前单元格背景色的功能:

  1: <style>
  2:         <Style.Triggers>
  3:         <DataTrigger Binding="{Binding Path=Row.DataItem.Address, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=my:DataGridRowPresenter}}" Value="UK">
  4:             <Setter Property="Background" Value="Yellow" />
  5:         </DataTrigger>
  6:         <DataTrigger Binding="{Binding Path=Row.DataItem.Address, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=my:DataGridRowPresenter}}" Value="Europe">
  7:             <Setter Property="Background" Value="Orange" />
  8:         </DataTrigger>
  9:         <MultiDataTrigger>
 10:             <MultiDataTrigger.Conditions>
 11:                 <Condition Binding="{Binding Path=Row.DataItem.Address, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=my:DataGridRowPresenter}}" Value="India" />
 12:                 <Condition  Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"  />
 13:             </MultiDataTrigger.Conditions>
 14:             <Setter Property="Background" Value="Blue" />
 15:         </MultiDataTrigger>
 16:         <MultiDataTrigger>
 17:             <MultiDataTrigger.Conditions>
 18:                 <Condition Binding="{Binding Path=Row.DataItem.Address, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=my:DataGridRowPresenter}}" Value="US" />
 19:                 <Condition  Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"  />
 20:             </MultiDataTrigger.Conditions>
 21:             <Setter Property="Background" Value="Green" />
 22:         </MultiDataTrigger>
 23:   
 24: </style>

 

效果图如下:

MultiDataTrigger_ChangeBackColor

 

Demo 下载:

VS2010+.Framework 4.0 + C# 点击下载

 

VS2010+Framework 4.0 + VB.NET 点击下载

ComponentOne Enterprise | 下载试用

ComponentOne 是一套专注于企业 .NET开发、支持 .NET Core 平台,并完美集成于 Visual Studio 的第三方控件集,包含 300 多种 .NET开发控件,提供表格数据管理、数据可视化、报表和文档、日程安排、输入和编辑、导航和布局、系统提升工具等七大功能,被誉为“.NET开发的‘瑞士军刀’”。

ComponentOne 为您提供专业的产品咨询服务,并由技术支持工程师为您1对1解答。>> 发帖提问

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态