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