彩票走势图

C1DataGrid for WPF使用技巧之C1DataGrid的条件化数据模板

转帖|使用教程|编辑:龚雪|2015-12-23 09:22:10.000|阅读 1381 次

概述:C1DataGrid for WPF控件提供了很多不同的列类型,但是如何在同一列里添加不同的类型呢?本文,我们就创建一个工程来使用C1DataGrid。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

C1DataGrid for WPF控件提供了很多不同的列类型,但是如何在同一列里添加不同的类型呢?我们可以通过DataTriggers和DataGridTemplateColumn来完成功能。单元格的数据依靠绑定的数据,我们需要给数据或是类型添加一个DataTemplate数据模板。本文,我们就创建一个工程来使用C1DataGrid。

步骤一:创建绑定的ViewModel

首先,我们需要创建列上每个单元格的绑定的ViewModel,代码参考如下:

public class ViewModel
{
public ObservableCollection<string> ControlTypes
{
get;
set;
}
public ViewModel()
{
ControlTypes = new ObservableCollection<string>();
ControlTypes.Add("Name");
ControlTypes.Add("Designation");
ControlTypes.Add("Company");
ControlTypes.Add("Gender");
ControlTypes.Add("Age");
ControlTypes.Add("IsActive");
ControlTypes.Add("Address");
ControlTypes.Add("");
}
}

步骤二:创建DataGridtemplateColumn

现在,我们需要将C1DataGrid添加到设计器然后添加DtaGridTemplateColumn。这样,我们就可以依据数据设计不同的单元格类型。在DataGridTemplateColumn,我们定义CellTemplate来自定义ContentControl的样式,这需要DataTriggers的帮助。我们使用DataTrigger因为我们基于数据添加不同的控件。

<c1:C1DataGrid Name="c1DataGrid" ItemsSource="{Binding ControlTypes}" AutoGenerateColumns="False" HeadersVisibility="None" Grid.Row="1"
RowHeight="Auto">
<c1:C1DataGrid.Columns>
<c1:DataGridTextColumn Header="Control Type" Binding="{Binding}"/>
<c1:DataGridTemplateColumn Header="Actual Control">
<c1:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding}" Value="Name">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBox Text="Name"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="Designation">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBox Text="Designation"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="Company">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBox Text="Company"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="Gender">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ComboBox>
<ComboBox.Items>
<ComboBoxItem Content="Male"/>
<ComboBoxItem Content="Female"/>
</ComboBox.Items>
</ComboBox>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="IsActive">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<CheckBox Content="IsActive?"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="Address">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<c1:C1RichTextBox TextWrapping="Wrap" Width="300" Height="50" VerticalScrollBarVisibility="Auto"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="Button">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Button Content="Button"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</c1:DataGridTemplateColumn.CellTemplate>
</c1:DataGridTemplateColumn>
</c1:C1DataGrid.Columns>
</c1:C1DataGrid>

步骤三:设置DataContext

我们已经创建了单元格。现在最后一步就是设置DataBindings的DataContext,我们有很多选项给当前页设置DataContext。但是我们建议在构造器里设置,写在初始化代码之后。因为XAML的绑定运行在初始化之后。

public MainWindow()
{
InitializeComponent();
this.DataContext = new ViewModel();
}

结论:

我们可以给一个单一列添加不同类型的单元格通过DataGridTemplateColumn的DataTriggers。如图所示:

C1DataGrid for WPF使用技巧之简单数据绑定

本文的示例请下载: 

PS: 关于ComponentOne,这些产品你可以关注>>
本文转载自
2015岁末扫尾之战!全球厂商携手放利!优惠详情点击查看>>

标签:WPF用户界面控件ComponentOne

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP