Studio for WPF: C1DataGrid 实现 MultiDataTrigger 功能

发布时间:2013/12/24 00:12 发布者:iceman

返回博客中心

在本篇文章中,展示了如何实现 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 点击下载


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网