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

分享

WPF中的數(shù)據(jù)模板(DataTemplate)

 昵稱26028193 2015-06-09
                                                                                  WPF中的數(shù)據(jù)模板(DataTemplate)
                                                                                                                          周銀輝

在WPF中我們可以為自己的數(shù)據(jù)定制顯示方式,,也就是說(shuō)雖然某數(shù)據(jù)數(shù)據(jù)是一定的,,但我們可以做到讓它的表現(xiàn)方式多種多樣,比如一個(gè)時(shí)間,,在以前我們一般使用一個(gè)字符串(比如“12:03”)來(lái)顯示,,但我們?yōu)槭裁淳筒荒茱@示一個(gè)小時(shí)鐘呢,其實(shí)這更合乎情理,,利用WPF中的數(shù)據(jù)模板技術(shù)隨意并輕松地表現(xiàn)你的數(shù)據(jù).

數(shù)據(jù)模板適用于Content Control類控件與Items Control類控件.

我們假設(shè)有如下一個(gè)類
using System;

namespace Demo
{
    
public class People
    
{
        
private string name;

        
private string photo;

        
public People(string name, string photo)
        
{
            
this.name = name;
            
this.photo = photo;
        }


        
public string Name
        
{
            
get
            
{
                
return this.name;
            }

            
set
            
{
                
this.name = value;
            }

        }


        
public string Photo
        
{
            
get
            
{
                
return this.photo;
            }

            
set
            
{
                
this.photo = value;
            }

        }

    }

}

這個(gè)類很簡(jiǎn)單地表示了一個(gè)人,,他的姓名和他的照片(路徑)

如果在我們的軟件中有一個(gè)列表控件ListBox來(lái)顯示一個(gè)由多個(gè)人組成的列表,在.net 3.0以前我們可能就只能用文本來(lái)列出人的姓名而已,或者花不少的精力來(lái)重寫列表控件以便在列表中在顯示人名的同時(shí)顯示照片.

參考以下代碼:
<ListBox x:Name="ListBox_PeopleList" ItemTemplate="{StaticResource  MyTemplate}" />
我們定義了一個(gè)ListBox,并將其ItemTemplate制定為我們自定義的MyTemplate,,也就是說(shuō)列表項(xiàng)將按照MyTemplate制定的方式來(lái)顯示列表內(nèi)容,。
這樣我們就可以發(fā)揮我們的想像力來(lái)自定義MyTemplate
為了能在XAML中使用我們的People類,我們需要將其名字空間引入,參考以下代碼:
xmlns:demo="clr-namespace:Demo" 
其中Demo是我們的People類所在的名字空間,以后可以使用demo來(lái)表示這個(gè)名字空間了.

下面的代碼來(lái)定義我們的MyTemplate模板,以便告訴我們的列表如何來(lái)顯示他的項(xiàng)目:
<Window.Resources>        
    
<!--列表模板-->
    
<DataTemplate x:Key="MyTemplate" DataType="{x:Type demo:People}">
      
<Grid VerticalAlignment="Center" HorizontalAlignment="Center" Margin="4,4,4,4" >
        
<Grid.ColumnDefinitions>
          
<ColumnDefinition Width="Auto"/>
          
<ColumnDefinition Width="Auto"/>
        
</Grid.ColumnDefinitions>
        
<Image Source="{Binding Photo}" Width="50" Height="50" Grid.Column="0" Grid.RowSpan="1"/>
        
<TextBlock Text="{Binding Name}" Grid.Column="1" Grid.ColumnSpan="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
      
</Grid>
    
</DataTemplate>
</Window.Resources>
我們將模板定義為窗口的資源,,資源保存在一個(gè)資源字典中的,,x:Key="MyTemplate" 表示其在資源字典中的鍵,DataType="{x:Type demo:People}"表示該數(shù)據(jù)模板針對(duì)的數(shù)據(jù)類型是demo名字空間下的People類,,接下來(lái)在Gird中我們定義了該數(shù)據(jù)模板的視覺(jué)樹(shù),,這也是我們的工作重心,即該視覺(jué)樹(shù)定義了如何顯示我們的數(shù)據(jù),。我們使用了一個(gè)Image控件并將其Source綁定到People的Photo屬性上,,這樣以便在該Imag控件上顯示照片,然后在Image的右邊我們使用一個(gè)TextBlock控件來(lái)顯示人名(將People的Name屬性綁定到TextBlock的Text屬性上),。
注意到這個(gè)數(shù)據(jù)模板實(shí)際上在干什么:它定義了People類型對(duì)象的表現(xiàn)方式,,在這里是顯示People的照片并在照片的右方顯示姓名。
以后我們需要People對(duì)象按這種方式展示給用戶的時(shí)候,,我們只要將該數(shù)據(jù)模板指定給要顯示People對(duì)象的那個(gè)控件就可以了,。
比如
<ListBox x:Name="ListBox_PeopleList" ItemTemplate="{StaticResource  MyTemplate}" />
就告訴我們的列表控件按照MyTemplate定義的方式來(lái)顯示其項(xiàng)目。

呵呵,,這樣是不是比以前Code方式來(lái)打造一個(gè)個(gè)性列表控件來(lái)得更方便,。

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多