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