2014-02-24 138 views
0

我有一个可编辑的组合框,我将对象列表中的名称属性绑定到(QBD.Name)。我无法弄清的是如何允许编辑这些名称 - 当我尝试编辑时,我不断收到对象引用错误。可编辑的组合框绑定

我相信我需要实现INotifyPropertyChanged,但我不完全确定它是如何工作的。

这里的绑定代码:

<ComboBox Name="cmbBxQBDNames" Text="Please Select a QBD" ItemsSource="{Binding Path=QBDs, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" DisplayMemberPath="QBD.Name" SelectedValuePath="QBD.Name" IsEditable="True" VerticalAlignment="Center" HorizontalAlignment="Stretch" Width="auto" MinWidth="25" Margin="45,0,0,0" Foreground="Black"></ComboBox> 

这里是我绑定的对象:

Public Class QBDs 

Private QBDsLocal As New ObservableCollection(Of QBD) 

Public Property QBDs As ObservableCollection(Of QBD) 
    Get 
     Return QBDsLocal 
    End Get 
    Set(value As ObservableCollection(Of QBD)) 
     QBDsLocal = value 
    End Set 
End Property 
End Class 


Public Class QBD 
Private NameLocal As String 

Public Property Name As String 
    Get 
     Return NameLocal 
    End Get 
    Set(value As String) 
     NameLocal = value 
    End Set 
End Property 
End Class 

而且,当我从下拉框中选择一个对象,我怎么能有它的名字显示在组合框?目前,它仍然是空白的。

回答

0

我认为你的问题是DisplayMemberPath。

尝试使用DisplayMemberPath =“名称”

让我知道它是否失败。

+0

谢谢,但它并没有做任何事情。 – user

0

我不明白为什么这会失败,请参阅我写的代码来测试您的问题。

<ComboBox ItemsSource="{Binding MyCollection}" DisplayMemberPath="FName" SelectedValuePath="SName" Height="40" IsEditable="True" /> 

//我的DataContext这里去

public class Model 
    { 
     private string sName; 

     public string SName 
     { 
      get { return sName; } 
      set { sName = value; } 
     } 
     private string fName; 

     public string FName 
     { 
      get { return fName; } 
      set { fName = value; } 
     } 

    } 
    public class ViewModel 
    { 
     private ObservableCollection<Model> myColl; 

     public ObservableCollection<Model> MyCollection 
     { 
      get { return myColl; } 
      set { myColl = value; } 
     } 

     public ViewModel() 
     { 
      MyCollection = new ObservableCollection<Model>(); 
      MyCollection.Add(new Model { FName = "Tony", SName = "Strark" }); 
      MyCollection.Add(new Model { FName = "Bruce", SName = "Wayne" }); 
      MyCollection.Add(new Model { FName = "Miranda", SName = "Frost" }); 

     } 

    } 

//我给自己定的ViewModel作为DataContext的,

这一切正常,我请一次检查,并请原谅我不给VB中的代码。

问候, 库马尔您的回复