在本篇文章中,展示了如何实现 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>
效果图如下:
Demo 下载:
VS2010+.Framework 4.0 + C# 点击下载
VS2010+Framework 4.0 + VB.NET 点击下载