2017-02-23 131 views
1

我遇到了在XAML中綁定WPF組合框的問題。如何在XAML中將WPF組合框綁定到列表<Objects>?

這是我的對象定義和收集:

public class AccountManager 
{ 
    public long UserCode { get; set; } 
    public string UserName { get; set; } 
} 

public partial class MainWindow : Window 
{  
    public List<AccountManager> AccountManagers; 
} 

這裏是我的組合框的XAML定義:

ComboBox Name="cbTestAccountManagers" 
      ItemsSource="{Binding AccountManagers}" 
      DisplayMemberPath="UserName" 
      SelectedValuePath="UserCode" 
      Width="250" 

我不太清楚我在做什麼這裏錯了。 我在運行/加載時沒有遇到任何錯誤。 ComboBox在下拉菜單中顯示沒有任何內容。 (這是空的)。

有人能指出我正確的方向嗎?

謝謝

+0

一開始你應該有你的使用可觀察到的集合,第二你不能綁定您在VM客戶經理的屬性列表屬性只有 – MikeT

+0

MikeT:能否請您解釋更詳細一點?我不是很遵循「不能綁定屬性,只有屬性。」 Thx – JohnB

+0

指向你在正確的方向所有綁定錯誤報告到輸出窗口,他們不會導致休息 – MikeT

回答

0

你的問題很簡單。 更改

public List<AccountManager> AccountManagers; 

這個

public List<AccountManager> AccountManagers { get; set; } 

,並確保你在主窗口的構造函數有這些

public MainWindow() 
{ 
    InitializeComponent(); 
    //Setup Account managers here 
    DataContext = this; 
} 

你只能綁定屬性不字段,並且您需要確保正確的數據上下文

+0

感謝NR:我沒有在我的構造函數中設置我的DataContext。現在工作正常。 – JohnB

+0

我很高興聽到它! –

1

你犯了幾個錯誤

首先你不遵循MVVM

正確的MVVM應如下

public class AccountManager 
{ 
    public long UserCode { get; set; } 
    public string UserName { get; set; } 
} 
public class AccountManagersVM 
{ 
    public ObservableCollection<AccountManager> AccountManagers{ get; set; } 

} 

則無需更改代碼的背後,你只需要使用它可以直接設置在DataContext或經由結合

<Window.DataContext> 
    <local:AccountManagersVM /> 
</Window.DataContext> 
ComboBox ItemsSource="{Binding AccountManagers}" 
      DisplayMemberPath="UserName" 
      SelectedValuePath="UserCode" 
      Width="250" 

第二屬性/字段不能被綁定唯一屬性

public long UserCode { get; set; }工作,但public long UserCode; 不會