您的位置:首页 > 其它

Silverlight中关于ComboBox的各种使用(基本上是汇总了往上的一些方法)

2012-08-24 13:32 344 查看
前端放置了几个ComboBox的控件。

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


后端的Cs文件如下:

public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
InitlizePage();
}

public void InitlizePage()
{
#region comboBox1 最基本的绑定

ComboBoxItem lbi = new ComboBoxItem();
lbi.SetValue(ComboBoxItem.ContentProperty, "江苏");

this.comboBox1.Items.Add("武汉");
this.comboBox1.Items.Add("大连");
this.comboBox1.Items.Add("苏州");
this.comboBox1.Items.Add(lbi);

this.comboBox1.SelectedItem = lbi;
#endregion

#region 构建了一个数据源
List<Product> _list = new List<Product>();
_list.Add(new Product() { ID = 11, Name = "产品1" });
_list.Add(new Product() { ID = 22, Name = "产品2" });
_list.Add(new Product() { ID = 33, Name = "产品3" });
_list.Add(new Product() { ID = 44, Name = "产品4" });
_list.Add(new Product() { ID = 55, Name = "产品5" });
_list.Add(new Product() { ID = 66, Name = "产品6" });
#endregion

#region 添加数据源
this.comboBox2.DisplayMemberPath = "Name";
//this.comboBox2.SelectedValuePath = "ID";//没有指定Value值
this.comboBox2.UpdateLayout();
this.comboBox2.ItemsSource = _list;

//进行初始化赋值,使用SelectedItem  ComboBox的数据初始化跟web中的DropDownList是不一样的
this.comboBox2.SelectedItem = (from p in this.comboBox2.Items
where (p as Product).Name == "产品4"
select p).First();
#endregion

#region
this.comboBox5.DisplayMemberPath = "Name";
this.comboBox5.SelectedValuePath = "ID";//指定Value值
this.comboBox5.UpdateLayout();
this.comboBox5.ItemsSource = _list;

int SelectedIndex = -1;

for(int i =0;i<_list.Count;i++ )
{
if (_list[i].ID == 33)
{
SelectedIndex = i;
break;
}
}
//通过SelectedIndex来进行初始化绑定
this.comboBox5.SelectedIndex = SelectedIndex;

#endregion

#region 添加自定义Item
ComboBoxItem cbiRight = new ComboBoxItem();
cbiRight.Background = new SolidColorBrush(Colors.Yellow);
cbiRight.HorizontalContentAlignment = HorizontalAlignment.Right;
cbiRight.SetValue(ComboBoxItem.ContentProperty, "上海");

ComboBoxItem cbiCenter = new ComboBoxItem();
cbiCenter.Background = new SolidColorBrush(Colors.Cyan);
cbiCenter.HorizontalContentAlignment = HorizontalAlignment.Center;
cbiCenter.SetValue(ComboBoxItem.ContentProperty, "北京");
ComboBoxItem cbiLeft = new ComboBoxItem();
cbiLeft.Background = new SolidColorBrush(Colors.LightGray);
cbiLeft.HorizontalContentAlignment = HorizontalAlignment.Left;
cbiLeft.SetValue(ComboBoxItem.ContentProperty, "深圳");

this.comboBox3.Items.Add(cbiRight);
this.comboBox3.Items.Add(cbiCenter);
this.comboBox3.Items.Add(cbiLeft);

#endregion

Image img = new Image();
img.Source = new BitmapImage(new Uri("img/1.png", UriKind.Relative));

Label lbl = new Label();
lbl.Content = "带图片的选项";

StackPanel sp = new StackPanel();
sp.Orientation = Orientation.Horizontal;
sp.Children.Add(img);
sp.Children.Add(lbl);

ComboBoxItem multipleCmb = new ComboBoxItem();
multipleCmb.Content = sp;
this.comboBox4.Items.Add(multipleCmb);

}

private void comboBox2_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Product product = (sender as ComboBox).SelectedItem as Product;
int selectID = product.ID;
string selectedName = product.Name;
//MessageBox.Show(selectID.ToString() + selectedName);

Product product2 = comboBox2.SelectedValue as Product;
int selectedID2 = product2.ID;
string selectedName2 = product2.Name;
//MessageBox.Show(selectedID2.ToString() + selectedName2);
}

//
private void comboBox5_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//MessageBox.Show(((ComboBox)sender).SelectedValue.ToString());//获取value
//MessageBox.Show(((Product)((ComboBox)sender).SelectedItem).Name);//获取name呢????
}
}


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

public class Product
{
public int ID { get; set; }

public string Name { get; set; }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: