Silverlight 组合框 SelectedItem 绑定问题

Posted

技术标签:

【中文标题】Silverlight 组合框 SelectedItem 绑定问题【英文标题】:Silverlight combobox SelectedItem binding issue 【发布时间】:2011-06-27 09:52:00 【问题描述】:

我是 .NET 新手,正在开发我的第一个 Silverlight 应用程序。

我有一个 Silverlight 子窗口,用于将新客户添加到 gridview,并具有以下代码:

namespace FrontEnd.Views

    public partial class NewCustomer : ChildWindow
    
        public DataTransfer.Customer MyCustomer  get; set; 

        public NewCustomer()
        
            InitializeComponent();
            MyCustomer = new DataTransfer.Customer();
            NewCustomerForm.CurrentItem = MyCustomer;
            NewCustomerForm.BeginEdit();
        

        private void OKButton_Click(object sender, RoutedEventArgs e)
        
            NewCustomerForm.CommitEdit();
            this.DialogResult = true;
        

        private void CancelButton_Click(object sender, RoutedEventArgs e)
        
            MyCustomer = null;
            NewCustomerForm.CancelEdit();
            this.DialogResult = false;
        
    




<dataform:DataForm x:Name="NewCustomerForm" Header="New Customer" AutoGenerateFields="False" Margin="0,12,0,0" MinWidth="290" HorizontalAlignment="Left">
            <dataform:DataForm.EditTemplate>
                <DataTemplate>
                    <StackPanel>
                        <dataform:DataField Label="First name">
                            <TextBox Text="Binding Firstname, Mode=TwoWay"/>
                        </dataform:DataField>
                        <dataform:DataField Label="Last name">                         
                            <ComboBox x:Name="cb1" SelectedItem="Binding Lastname, Mode=TwoWay">
                                <ComboBoxItem Content="NameOne"></ComboBoxItem>
                                <ComboBoxItem Content="NameTwo"></ComboBoxItem>
                            </ComboBox>
                        </dataform:DataField>
                    </StackPanel>
                </DataTemplate>
            </dataform:DataForm.EditTemplate>
        </dataform:DataForm> 

MyCustomer 对象包含 Firstname 和 Lastname 属性。

仅出于测试目的,我想通过组合框添加姓氏,但问题是,当我将姓氏属性绑定到组合框选定项时,保存到姓氏属性的值是字符串 System.Windows。 Controls.ComboBoxItem 而不是 SelectedItem 文本值。

如何将组合框中 selectedItem 中的文本保存到 Lastname 属性?

【问题讨论】:

你试过选择值而不是选择项吗? 是的,仍然将相同的值保存到属性:System.Windows.Controls.ComboBoxItem 请看下面的答案。它应该工作 【参考方案1】:

试试这个

<ComboBox x:Name="cb1" SelectedValue="Binding Lastname, Mode=TwoWay" SelectedValuePath="Content">

【讨论】:

【参考方案2】:

使用 ComboBoxName.items.SelectedBoxItem

那是 SelectedBoxItem 而不是 SelectedItem

【讨论】:

以上是关于Silverlight 组合框 SelectedItem 绑定问题的主要内容,如果未能解决你的问题,请参考以下文章

Silverlight组合框键盘选择

将一些组合框绑定到一个集合

当组合框打开时,Silverlight Combobox 触发 KeyDown 事件

ms silverlight blend sketchflow - 组合框中的默认文本

在组合框中书写

Silverlight Combobox 将所选项目设置为 datagrid 的所选项目