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

今天编程的时候要用到ComboBox控件,然而SilverLight中的ComboBox与平常所用的大不一样,无论怎么设置都实现不了编辑功能,所以想出了这个土方法,原理就是让ComboBox和TextBox位置上重叠,TextBox在上面。

具体实现操作如下:

1.在前台设计代码中添加ComboBox和TextBox控件,并给每个空间添加唯一标识Name

2.将ComboBox和TextBox进行绑定。

DataContext="{Binding ElementName=textBox1,Mode=OneTime}

3.为ComboBox添加事件:ComboBox_DropDownClosed

            <Canvas Margin="0,0,0,0">
                <ComboBox Height="23" Name="comboBox1" Width="120" DropDownClosed="ComboBox_DropDownClosed" DataContext="{Binding ElementName=textBox1,Mode=OneTime}">
                        <ComboBoxItem Content="列表1-1" />
                        <ComboBoxItem Content="列表1-2" />
                        <ComboBoxItem Content="列表1-3" />
                </ComboBox>
                <TextBox  Height="23" Name="textBox1" Width="100" Canvas.Left="0" Canvas.Top="0" />
             </Canvas>
            <Canvas Margin="0,30,0,0">
                    <ComboBox DataContext="{Binding ElementName=textBox2, Mode=OneTime}" DropDownClosed="ComboBox_DropDownClosed" Height="23" Name="comboBox2" Width="120">
                        <ComboBoxItem Content="列表2-1" />
                        <ComboBoxItem Content="列表2-2" />
                        <ComboBoxItem Content="列表2-3" />
                </ComboBox>
                <TextBox Height="23" Name="textBox2" Width="100" />
             </Canvas>
4.实现事件处理函数

        private void ComboBox_DropDownClosed(object sender, EventArgs e)
        {
            ComboBox cmb = sender as ComboBox;
            BindingExpression binding = cmb.GetBindingExpression(ComboBox.DataContextProperty);
            TextBox Txt = binding.DataItem as TextBox;
            ComboBoxItem cbi = cmb.SelectedItem as ComboBoxItem;
            if(cbi != null)
            	Txt.Text = cbi.Content.ToString();
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值