码迷,mamicode.com
首页 > Windows程序 > 详细

WPF的ComboBox 数据模板自定义

时间:2015-09-09 22:41:21      阅读:467      评论:0      收藏:0      [点我收藏+]

标签:

WPF的ComboBox 有些时候不能满足用户需求,需要对数据内容和样式进行自定义,下面就简要介绍一下用数据模板(DataTemplate)的方式对ComboBox 内容进行定制:
原型设计如下:
技术分享
步骤:
1、新建一个WPF应用程序WpfAppDemo(VS2012),并新建一个images文件夹(上传图片素材);
2、在主界面MainWindow.xaml文件中添加一个Label、ComboBox 和Button控件,如下图:
技术分享
代码如下:

 1 <Window x:Class="WpfAppDemo.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         Title="MainWindow" Height="350" Width="525">
 5     <Grid>
 6         <ComboBox x:Name="myColorComBox" HorizontalAlignment="Left" Margin="110,79,0,0" VerticalAlignment="Top" Width="309" Height="48"  >
 7             <!--ItemTemplate-->
 8             <ComboBox.ItemTemplate>
 9                 <!--DataTemplate开始-->
10                 <DataTemplate>
11                     <Grid>
12                         <Grid.ColumnDefinitions>
13                             <ColumnDefinition Width="36"/>
14                             <ColumnDefinition Width="100*"/>
15                         </Grid.ColumnDefinitions>
16                         <Grid.RowDefinitions>
17                             <RowDefinition Height="50*"/>
18                             <RowDefinition Height="50*"/>
19                         </Grid.RowDefinitions>
20                         <!--绑定数据对象Image属性-->
21                         <Image Source="{Binding Image}" Width="32" Height="32" Margin="3,3,3,3" Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" />
22                         <!--绑定数据对象Name属性-->
23                         <TextBlock Text="{Binding Name}" FontSize="12"  Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left"  VerticalAlignment="Center"/>
24                         <!--绑定数据对象Desc属性-->
25                         <TextBlock Text="{Binding Desc}" FontSize="10" Grid.Row="1" Grid.Column="1"  HorizontalAlignment="Left"  VerticalAlignment="Center"/>
26                     </Grid>                    
27                 </DataTemplate>
28                 <!--DataTemplate结束-->
29             </ComboBox.ItemTemplate>
30         </ComboBox>
31         <Label Content="员工: " HorizontalAlignment="Left" Margin="66,92,0,0" VerticalAlignment="Top"/>
32         <Button Content="显示" HorizontalAlignment="Left" Margin="110,166,0,0" VerticalAlignment="Top" Width="75" Height="22" Click="Button_Click"/>
33 
34     </Grid>
35     
36 </Window>


3、在主界面MainWindow.xaml.cs文件中进行逻辑处理,代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Windows;
 7 using System.Windows.Controls;
 8 using System.Windows.Data;
 9 using System.Windows.Documents;
10 using System.Windows.Input;
11 using System.Windows.Media;
12 using System.Windows.Media.Imaging;
13 using System.Windows.Navigation;
14 using System.Windows.Shapes;
15 
16 
17 namespace WpfAppDemo
18 {
19     /// <summary>
20     /// MainWindow.xaml 的交互逻辑
21     /// </summary>
22     public partial class MainWindow : Window
23     {
24         public MainWindow()
25         {
26             InitializeComponent();
27             //初始化数据,并绑定
28             LodData();
29         }
30 
31 
32         private void LodData()
33         {
34             IList<empoyee> customList = new List<empoyee>();
35             //项目文件中新建一个images文件夹,并上传了001.png,002.png,003.png
36             customList.Add(new empoyee() { ID ="001", Name = "Jack" ,Image="images/001.png",Desc="this is good gay!"});
37             customList.Add(new empoyee() { ID = "002", Name = "Smith", Image = "images/002.png", Desc = "this is great gay!" });
38             customList.Add(new empoyee() { ID = "003", Name = "Json", Image = "images/003.png", Desc = "this is the bset gay!" });
39 
40 
41             this.myColorComBox.ItemsSource = customList;//数据源绑定
42             this.myColorComBox.SelectedValue = customList[1];//默认选择项
43             
44         }
45 
46 
47         private void Button_Click(object sender, RoutedEventArgs e)
48         {
49             //显示选择的员工ID信息
50             MessageBox.Show((this.myColorComBox.SelectedItem as empoyee).ID);
51         }
52 
53 
54        
55 
56 
57     }
58     //定义员工类
59     public class empoyee
60     {
61         public string ID { get; set; }
62         public string Name { get; set; }
63         public string Image { get; set; }
64         public string Desc { get; set; }
65      
66     }
67 }

 

4、编译运行,如果运气不错的话,应该能看到如下的界面:

技术分享

 

WPF的ComboBox 数据模板自定义

标签:

原文地址:http://www.cnblogs.com/isaboy/p/cusComboBox.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!