日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

继续聊WPF——动态数据模板

發(fā)布時(shí)間:2023/12/10 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 继续聊WPF——动态数据模板 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我為啥稱之為“動(dòng)態(tài)數(shù)據(jù)模板”?先看看下面的截圖,今天,我們就是要實(shí)現(xiàn)這種功能。

?

大概是這樣的,我們定義的DataTemplate是通過(guò)觸發(fā)器動(dòng)態(tài)應(yīng)用到 ComboBoxItem 上。

這個(gè)下拉列表控件綁定了一個(gè)Person集合,Person類的定義如下:

?

[csharp]?view plain?copy
  • public?class?Person??
  • {??
  • ????public?string?Name?{?get;?set;?}??
  • ????public?int?Age?{?get;?set;?}??
  • ????public?string?Email?{?get;?set;?}??
  • ????public?override?string?ToString()??
  • ????{??
  • ????????return?Name;??
  • ????}??
  • }??

  • ?

    這里重寫了ToString方法,因?yàn)镃omboBox生成的項(xiàng)是調(diào)用對(duì)象的ToString方法的,為了能不設(shè)置數(shù)據(jù)模板的前提下正確顯示列表項(xiàng),需要重寫ToString方法,默認(rèn)顯示姓名屬性。 然后,我們?yōu)镃omboBoxItem定義一個(gè)處于高亮狀態(tài)時(shí)使用的數(shù)據(jù)模板,也就是當(dāng)鼠標(biāo)移到項(xiàng)上時(shí)發(fā)生。 [html]?view plain?copy
  • <Window.Resources>??
  • ????<!--?
  • ????????當(dāng)項(xiàng)高亮顯示時(shí)使用的數(shù)據(jù)模板?
  • ????-->??
  • ????<DataTemplate?x:Key="hightlightTmp">??
  • ????????<Grid>??
  • ????????????<Grid.RowDefinitions>??
  • ????????????????<RowDefinition?Height="auto"/>??
  • ????????????????<RowDefinition?Height="auto"/>??
  • ????????????</Grid.RowDefinitions>??
  • ????????????<StackPanel?Margin="0,5,0,0"?Grid.Row="0"?Orientation="Horizontal">??
  • ????????????????<TextBlock?Margin="2,0"?FontWeight="Bold"?FontSize="14">??
  • ????????????????????????????<TextBlock.Text>??
  • ????????????????????????????????<Binding?Path="Name"??
  • ?????????????????????????????????????????StringFormat="姓名:{0}"/>??
  • ????????????????????????????</TextBlock.Text>??
  • ????????????????</TextBlock>??
  • ????????????????<TextBlock?Margin="20,0">??
  • ????????????????????????????<TextBlock.Text>??
  • ????????????????????????????????<Binding?Path="Age"??
  • ?????????????????????????????????????????StringFormat="年齡:{0}"/>??
  • ????????????????????????????</TextBlock.Text>??
  • ????????????????</TextBlock>??
  • ????????????</StackPanel>??
  • ????????????<TextBlock?Margin="0,2,0,5"?Grid.Row="1">??
  • ????????????????????????<TextBlock.Text>??
  • ????????????????????????????<Binding?Path="Email"??
  • ?????????????????????????????????????StringFormat="電郵:{0}"/>??
  • ????????????????????????</TextBlock.Text>??
  • ????????????</TextBlock>??
  • ????????</Grid>??
  • ????</DataTemplate>??
  • ???????..............??????????
  • </Window.Resources>??

  • ?

    為 ComboBoxItem 定義一個(gè)樣式。 [html]?view plain?copy
  • <Window.Resources>??
  • ?????................??????????
  • ????<!--?項(xiàng)樣式?-->??
  • ????<Style?x:Key="cmbStyle"?TargetType="{x:Type?ComboBoxItem}">??
  • ????????<Style.Triggers>??
  • ????????????<Trigger?Property="IsHighlighted"?Value="True">??
  • ????????????????<Setter?Property="ContentTemplate"??
  • ????????????????????????Value="{StaticResource?hightlightTmp}"/>??
  • ????????????</Trigger>??
  • ????????</Style.Triggers>??
  • ????</Style>??
  • </Window.Resources>??

  • ?

    在窗體中聲明一個(gè)ComboBox。 [html]?view plain?copy
  • <Grid>??
  • ????<ComboBox?x:Name="cmb"?Margin="10,10"??
  • ??????????????Height="24"?Width="200"??
  • ??????????????HorizontalAlignment="Left"??
  • ??????????????VerticalAlignment="Top"??
  • ??????????????ItemContainerStyle="{StaticResource?cmbStyle}"/>??
  • </Grid>??

  • ?

    最后,切換到代碼視圖,完成設(shè)置數(shù)據(jù)源的C#代碼。 [csharp]?view plain?copy
  • public?Window1()??
  • {??
  • ????InitializeComponent();??
  • ????this.cmb.ItemsSource?=?new?Person[]??
  • ????{??
  • ????????new?Person{Name="小李",Age=22,Email="suk211@163.com"},??
  • ????????new?Person{Name="小王",Age=20,Email="minat@126.com"},??
  • ????????new?Person{Name="黃漲",Age=21,Email="laned2@21cn.com"},??
  • ????????new?Person{Name="高產(chǎn)",Age=22,Email="ha@136.com"},??
  • ????????new?Person{Name="杜林",Age=21,Email="null@yaahoo.com"},??
  • ????????new?Person{Name="楊白姥",Age=50,Email="cYang@21cn.com"},??
  • ????????new?Person{Name="鳥(niǎo)人",Age=31,Email="bgl@ask.net.cn"},??
  • ????????new?Person{Name="宋小八",Age=28,Email="xde227@123h.com"}??
  • ????};??
  • }??

  • ?

    完成,這時(shí)候運(yùn)行一下,你會(huì)看到上文中截圖中的效果了。

    轉(zhuǎn)載于:https://www.cnblogs.com/sjqq/p/8379479.html

    總結(jié)

    以上是生活随笔為你收集整理的继续聊WPF——动态数据模板的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。