2014-02-24 175 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中的代碼。

問候, 庫馬爾您的回覆