久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

WPF DataGrid 之數(shù)據(jù)綁定

 Jcstone 2012-02-27

WPF DataGrid 之數(shù)據(jù)綁定

1. Auto generation of columns

最簡單的方法莫過于讓DataGrid根據(jù)數(shù)據(jù)源中的字段自動生成列了:

根據(jù)實體類的公共屬性, 能夠自動生成四種類型的數(shù)據(jù)列,,對應(yīng)關(guān)系如下:

TextBox columns for string values;

CheckBox columns for boolean values;

ComboBox columns for enumerable values;

Hyperlink columns for Uri values;

 

拖個DataGrid放在Window中,, 把他的ItemsSource綁定到數(shù)據(jù)源上

如:ItemsSource="{Binding Customers}"

注意:一定要把AutoGenerateColumns的值改為True, 默認拖上去時此屬性的值為False.

 

2. Manually define columns

設(shè)置AutoGenerateColumns為False, 那么一切就要靠自己了!

此時需要在xaml文件中編輯DataGrid.Columns,。

同樣我們可以這樣對應(yīng)數(shù)據(jù)類型:

DataGridCheckBoxColumn for boolean values;

DataGridComboBoxColumn for enumerable values;

DataGridHyperlinkColumn for Uri values;

DataGridTextColumn to show text values;

 

Import for customer defined columns

DataGridTemplateColumn to show any types of data by defining your own cell template.

比如要定義一個顯示圖片的列:

<DataGrid.Columns>
<DataGridTemplateColumn Header="Image" Width="SizeToCells" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
     <DataTemplate>
<Image Height="80" Source="{Binding Image}" />
     </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
 

3. Selection

通過設(shè)置DataGrid的SelectionMode,SelectionUnit屬性,,可以控制運行時我們能過選中的Cell or Row 的模式。
SelectionMode.Single 每次只能選中單行,;
SelectionMode.Extended 可以選中多行,;
 
SelectionUnit.Cell 每次只能選中cell;
SelectionUnit.FullRow 每次只能選中row;
SelectionUnit.CellorRowHeader 可選中cell,也可通過RowHeader選中row.
 
4. Column sorting, reordering and resizing
我們可以通過幾個簡單的屬性實現(xiàn)很酷的功能:
CanUserReorderColumns enables or disables column re-ordering
CanUserResizeColumns enables or disables column resizing
CanUserResizeRows enables or disables row resizing
CanUserSortColumns enables or disables column sorting
These properties’ default values are “True”, like:
<DataGrid ItemsSource="{Binding Customers}" 
          CanUserReorderColumns="True"
          CanUserResizeColumns="True"
          CanUserResizeRows="True”
           CanUserSortColumns="True"/>
 
5. Grouping
首先要使用能夠分組的數(shù)據(jù)源,,見demo.
Like this:
GroupedCustomers = new ListCollectionView(Customers);
GroupedCustomers.GroupDescriptions.Add(new PropertyGroupDescription("Gender"));
 
重要的是你還要在xaml文件中定義模板來顯示分組,, It should be like this:
<DataGrid AutoGenerateColumns="True"                   ItemsSource="{Binding GroupedCustomers}">
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
     <DataTemplate>
        <StackPanel>
        <TextBlock Text="{Binding Path=Name}" FontWeight="Bold" Padding="3"/>
        </StackPanel>
     </DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.ContainerStyle>
     <Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
          <Expander>
          <Expander.Header>
            <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Path=Name}" />
          <TextBlock Text="{Binding Path=ItemCount}" Margin="8,0,4,0"/>
            <TextBlock Text="Items"/>
            </StackPanel>
          </Expander.Header>
          <ItemsPresenter />
          </Expander>
         </ControlTemplate>
       </Setter.Value>
      </Setter>
     </Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
</DataGrid>
 

6. Row Details

這個比較好搞,只要設(shè)置 RowDetailsTemplate就可以了,!

It is like this:

<DataGrid.RowDetailsTemplate>
<DataTemplate>
     <Image Height="100" Source="{Binding Image}" />
</DataTemplate>
</DataGrid.RowDetailsTemplate>

通過實現(xiàn)RowDetailsTemplateSelector,還可以根據(jù)條件生成不同的Details(Row Details depending on the type of data).

代碼有點多,,like bellow:

public class GenderTemplateSelector : DataTemplateSelector
{
    public DataTemplate MaleTemplate { get; set; }
    public DataTemplate FemaleTemplate { get; set; }   
    public override DataTemplate SelectTemplate(object item, 
                  DependencyObject container)
    {
        var customer = item as Customer;
        if (customer == null)
            return base.SelectTemplate(item, container);
        if( customer.Gender == Gender.Male)
        {
            return MaleTemplate;
        }
        return FemaleTemplate;
    }
}   
 
<l:GenderTemplateSelector x:Key="genderTemplateSelector">
    <l:GenderTemplateSelector.MaleTemplate>
        <DataTemplate>
            <Grid Background="LightBlue">
                <Image Source="{Binding Image}" Width="50" />
            </Grid>
        </DataTemplate>
    </l:GenderTemplateSelector.MaleTemplate>
    <l:GenderTemplateSelector.FemaleTemplate>
        <DataTemplate>
            <Grid Background="Salmon">
                <Image Source="{Binding Image}" Width="50" />
            </Grid>
        </DataTemplate>
    </l:GenderTemplateSelector.FemaleTemplate>
</l:GenderTemplateSelector>   
 
<DataGrid ItemsSource="{Binding Customers}" 
          RowDetailsTemplateSelector="{StaticResource genderTemplateSelector}" />  
 

7. Alternating BackgroundBrush

可以通過AlternatingRowBackground and AlternationCount 兩個屬性輕松實現(xiàn)隔行背景色,。

 

8. Frozen Columns

通過設(shè)置FrozenColumnCount 屬性,可以控制Frozen Columns.

數(shù)字 1 對應(yīng)第一列,,2 對應(yīng)第二列,,以此類推

 

9. Headers visbility

使用HeadersVisibility控制是否顯示列頭。

 

參考文章:http://www./DataGrid.html

Demo請從參考文章處下載,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多