2011-06-27 37 views
2

我是.NET新手,正在开发我的第一个Silverlight应用程序。Silverlight组合框SelectedItem绑定问题

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

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对象包含一个名字和姓氏属性。

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

我如何将文本从组合框中的selectedItem保存到姓氏属性中?

+0

您是否尝试选择的值,而不是选定的项目? –

+0

是的,仍将相同的值保存到属性:System.Windows.Controls.ComboBoxItem – randoms

+0

请参阅下面的答案。它应该工作 –

回答

2

试试这个

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

使用ComboBoxName.items.SelectedBoxItem

是SelectedBoxItem代替的SelectedItem