Silverlight中关于ComboBox的各种使用

前端放置了几个ComboBox的控件。


1 <Grid x:Name="LayoutRoot" Background="White">
2 <ComboBox Height="23" HorizontalAlignment="Left" Margin="26,49,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" />
3 <ComboBox Height="23" HorizontalAlignment="Left" Margin="223,49,0,0" Name="comboBox2" VerticalAlignment="Top" Width="120" SelectionChanged="comboBox2_SelectionChanged" />
4 <ComboBox Height="23" HorizontalAlignment="Left" Margin="26,140,0,0" Name="comboBox3" VerticalAlignment="Top" Width="120" />
5 <ComboBox Height="23" HorizontalAlignment="Left" Margin="223,140,0,0" Name="comboBox4" VerticalAlignment="Top" Width="120" />
6 <ComboBox Height="23" HorizontalAlignment="Left" Margin="26,199,0,0" Name="comboBox5" VerticalAlignment="Top" Width="120" SelectionChanged="comboBox5_SelectionChanged" />
7 </Grid>

后端的Cs文件如下:


  1 public partial class MainPage : UserControl
2 {
3 public MainPage()
4 {
5 InitializeComponent();
6 InitlizePage();
7 }
8
9 public void InitlizePage()
10 {
11 #region comboBox1 最基本的绑定
12
13 ComboBoxItem lbi = new ComboBoxItem();
14 lbi.SetValue(ComboBoxItem.ContentProperty, "江苏");
15
16 this.comboBox1.Items.Add("武汉");
17 this.comboBox1.Items.Add("大连");
18 this.comboBox1.Items.Add("苏州");
19 this.comboBox1.Items.Add(lbi);
20
21 this.comboBox1.SelectedItem = lbi;
22 #endregion
23
24 #region 构建了一个数据源
25 List<Product> _list = new List<Product>();
26 _list.Add(new Product() { ID = 11, Name = "产品1" });
27 _list.Add(new Product() { ID = 22, Name = "产品2" });
28 _list.Add(new Product() { ID = 33, Name = "产品3" });
29 _list.Add(new Product() { ID = 44, Name = "产品4" });
30 _list.Add(new Product() { ID = 55, Name = "产品5" });
31 _list.Add(new Product() { ID = 66, Name = "产品6" });
32 #endregion
33
34 #region 添加数据源
35 this.comboBox2.DisplayMemberPath = "Name";
36 //this.comboBox2.SelectedValuePath = "ID";//没有指定Value值
37 this.comboBox2.UpdateLayout();
38 this.comboBox2.ItemsSource = _list;
39
40 //进行初始化赋值,使用SelectedItem ComboBox的数据初始化跟web中的DropDownList是不一样的
41 this.comboBox2.SelectedItem = (from p in this.comboBox2.Items
42 where (p as Product).Name == "产品4"
43 select p).First();
44 #endregion
45
46 #region
47 this.comboBox5.DisplayMemberPath = "Name";
48 this.comboBox5.SelectedValuePath = "ID";//指定Value值
49 this.comboBox5.UpdateLayout();
50 this.comboBox5.ItemsSource = _list;
51
52 int SelectedIndex = -1;
53
54 for(int i =0;i<_list.Count;i++ )
55 {
56 if (_list[i].ID == 33)
57 {
58 SelectedIndex = i;
59 break;
60 }
61 }
62 //通过SelectedIndex来进行初始化绑定
63 this.comboBox5.SelectedIndex = SelectedIndex;
64
65 #endregion
66
67
68 #region 添加自定义Item
69 ComboBoxItem cbiRight = new ComboBoxItem();
70 cbiRight.Background = new SolidColorBrush(Colors.Yellow);
71 cbiRight.HorizontalContentAlignment = HorizontalAlignment.Right;
72 cbiRight.SetValue(ComboBoxItem.ContentProperty, "上海");
73
74 ComboBoxItem cbiCenter = new ComboBoxItem();
75 cbiCenter.Background = new SolidColorBrush(Colors.Cyan);
76 cbiCenter.HorizontalContentAlignment = HorizontalAlignment.Center;
77 cbiCenter.SetValue(ComboBoxItem.ContentProperty, "北京");
78 ComboBoxItem cbiLeft = new ComboBoxItem();
79 cbiLeft.Background = new SolidColorBrush(Colors.LightGray);
80 cbiLeft.HorizontalContentAlignment = HorizontalAlignment.Left;
81 cbiLeft.SetValue(ComboBoxItem.ContentProperty, "深圳");
82
83 this.comboBox3.Items.Add(cbiRight);
84 this.comboBox3.Items.Add(cbiCenter);
85 this.comboBox3.Items.Add(cbiLeft);
86
87 #endregion
88
89 Image img = new Image();
90 img.Source = new BitmapImage(new Uri("img/1.png", UriKind.Relative));
91
92 Label lbl = new Label();
93 lbl.Content = "带图片的选项";
94
95 StackPanel sp = new StackPanel();
96 sp.Orientation = Orientation.Horizontal;
97 sp.Children.Add(img);
98 sp.Children.Add(lbl);
99
100 ComboBoxItem multipleCmb = new ComboBoxItem();
101 multipleCmb.Content = sp;
102 this.comboBox4.Items.Add(multipleCmb);
103
104 }
105
106 private void comboBox2_SelectionChanged(object sender, SelectionChangedEventArgs e)
107 {
108 Product product = (sender as ComboBox).SelectedItem as Product;
109 int selectID = product.ID;
110 string selectedName = product.Name;
111 //MessageBox.Show(selectID.ToString() + selectedName);
112
113 Product product2 = comboBox2.SelectedValue as Product;
114 int selectedID2 = product2.ID;
115 string selectedName2 = product2.Name;
116 //MessageBox.Show(selectedID2.ToString() + selectedName2);
117 }
118
119 //
120 private void comboBox5_SelectionChanged(object sender, SelectionChangedEventArgs e)
121 {
122 //MessageBox.Show(((ComboBox)sender).SelectedValue.ToString());//获取value
123 //MessageBox.Show(((Product)((ComboBox)sender).SelectedItem).Name);//获取name呢????
124 }
125 }

当然,其中我们还要构建一个Product的类:


1 public class Product
2 {
3 public int ID { get; set; }
4
5 public string Name { get; set; }
6 }

获取选择的项的content:


1 string layerName = ((sender as ComboBox).SelectedItem as ComboBoxItem).Content.ToString();

Silverlight中关于ComboBox的各种使用

时间: 2024-10-12 22:46:52

Silverlight中关于ComboBox的各种使用的相关文章

XAML技术:SilverLight中可编辑ComboBox的简易实现

今天编程的时候要用到ComboBox控件,然而SilverLight中的ComboBox与平常所用的大不一样,无论怎么设置都实现不了编辑功能,所以想出了这个土方法,原理就是让ComboBox和TextBox位置上重叠,TextBox在上面. 具体实现操作如下: 1.在前台设计代码中添加ComboBox和TextBox控件,并给每个空间添加唯一标识Name 2.将ComboBox和TextBox进行绑定. DataContext="{Binding ElementName=textBox1,Mod

silverlight中常用的控件

一.布局控件 Canvas面板是一种很基础的布局面板,它支持对其中的控件采用绝对坐标定位.Canvas.Top和Canvas.Left.Canvas.ZIndex附加属性:如果指定了两个控件相对于父容器Canvas同样的边距,则后面声明的控件父覆盖前面声明的控件.这时我们可以使用Canvas.ZIndex属性来改变它们的显示顺序. StackPanel是一种简单的布局面板,它支持用行或列的方式来定位其中包含的控件.StackPanel 常用于安排页面上的一个很小的 UI 部分.默认情况下,Ori

silverlight中默认字体与值的对照表【转载】

http://www.cnblogs.com/liaohenchen/archive/2008/11/10/silverlight-combobox-fontfamily.html 近日在silverlight中想实现一个在combobox选择字体的效果,结果发现没有这方面现成的字体与值的对照表,特整理了一份,与大家共享 <ComboBox x:Name="cbFontFamily" SelectionChanged="cbFontFamily_SelectionCha

ArcGIS API for Silverlight中加载Google地形图(瓦片图)

原文:ArcGIS API for Silverlight中加载Google地形图(瓦片图) 在做水利.气象.土地等行业中,若能使用到Google的地形图那是再合适不过了,下面就介绍如何在ArcGIS API for Silverlight中加载Google地 形图.先上一个图,初步制作,待后续继续改进 ArcGIS API for Silverlight 中的ArcGISTiledMapServiceLayer图层,继承自TiledMapServiceLayer.如果想实现自己的缓存地图图 层

[Win10]1 WPF和WP8 Silverlight中的导航问题

一.Frame.Page框架的相关介绍 1.Frame类: 继承层次结构 System.Object   System.Windows.Threading.DispatcherObject     System.Windows.DependencyObject       System.Windows.Media.Visual         System.Windows.UIElement           System.Windows.FrameworkElement           

C# dataGridView控件中加入comboBox控件及注意事项

DataGridViewComboBoxColumn pCombo; private void Teaching_Add_Load(object sender, EventArgs e) { MyDBase DB = new MyDBase(DBUser.sserver,DBUser.DBName, DBUser.suser, DBUser.spasswd); DataSet DS= DB.GetRecordset("select * from view_teach_tmp"); da

Silverlight中使用MVVM(4)—演练

本来打算用MVVM实现CRUD操作的,这方面例子网上资源还挺多的,毕竟CRUD算是基本功了,因为最近已经开始学习Cailburn框架了,感觉时间 挺紧的,这篇就实现其中的更新操作吧.         功能很明确,当我们更改DataGrid中的CheckBox时,将源中当前发生变化的数据项在界面上显示出来.我们仍然在前面项目的基础上实现这个功能 首先我们需要给实体Person类添加一个Bool的属性,因为这里我们只对这个属性值操作,所以对于age,name属性也就无必要实现更改通知了 public

Silverlight中使用MVVM(2)-(提高)

在第一篇文章中的示例中,我们已经简单的了解了应用MVVM模式的流程,我的本意是你已经了解了一点MVVM的概念,然后又没有一个较好的例子学习,可以跟着我一起学习MVVM模式,所以这个部分,都是没有理论知识的,当然整个例子学完后,我们会回过头探讨一下,将其总结出来. 现 在我们主要在前面的示例上进行扩展,前面的示例中我们主要是将一个源对象绑定到DataGrid中的,接下来我们继续使用MVVM模式,将 DataGrid选择行的变化体现界面中,其实通过这个需求变化,你会发现UI与逻辑分离带来的优势,尽管

Silverlight中使用MVVM(3)—进阶

这篇主要引申出Command结合MVVM模式在应用程序中的使用 我们要做出的效果是这样的 就是提供了一个简单的查询功能将结果绑定到DataGrid中,在前面的基础上,这个部分相对比较容易实现了 我们在PageViewModel中添加两个属性 private string _searchText; //查询关键字 public string SearchText { get { return _searchText; } set { _searchText = value; if (Propert