轉(zhuǎn)帖|使用教程|編輯:龔雪|2015-12-23 09:22:10.000|閱讀 1440 次
概述:C1DataGrid for WPF控件提供了很多不同的列類型,但是如何在同一列里添加不同的類型呢?本文,我們就創(chuàng)建一個工程來使用C1DataGrid。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
C1DataGrid for WPF控件提供了很多不同的列類型,但是如何在同一列里添加不同的類型呢?我們可以通過DataTriggers和DataGridTemplateColumn來完成功能。單元格的數(shù)據(jù)依靠綁定的數(shù)據(jù),我們需要給數(shù)據(jù)或是類型添加一個DataTemplate數(shù)據(jù)模板。本文,我們就創(chuàng)建一個工程來使用C1DataGrid。
首先,我們需要創(chuàng)建列上每個單元格的綁定的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(""); } }
現(xiàn)在,我們需要將C1DataGrid添加到設計器然后添加DtaGridTemplateColumn。這樣,我們就可以依據(jù)數(shù)據(jù)設計不同的單元格類型。在DataGridTemplateColumn,我們定義CellTemplate來自定義ContentControl的樣式,這需要DataTriggers的幫助。我們使用DataTrigger因為我們基于數(shù)據(jù)添加不同的控件。
<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>
我們已經(jīng)創(chuàng)建了單元格。現(xiàn)在最后一步就是設置DataBindings的DataContext,我們有很多選項給當前頁設置DataContext。但是我們建議在構(gòu)造器里設置,寫在初始化代碼之后。因為XAML的綁定運行在初始化之后。
public MainWindow() { InitializeComponent(); this.DataContext = new ViewModel(); }
我們可以給一個單一列添加不同類型的單元格通過DataGridTemplateColumn的DataTriggers。如圖所示:
本文的示例請下載:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)