2014-02-19 84 views
0

試圖瞭解如何將此靜態列表綁定到位於不同窗口上的組合框。WPF將靜態列表綁定到組合框

public partial class MainWindow : Window 
{ 

    public static List<Classes.Entity> EntityList { get; set; } 

    public MainWindow() 
    { 
     EntityList = new List<Classes.Entity>();  
     InitializeComponent(); 
    } 
    ... 

對象:

public class Entity 
{ 
    public string entityName { get; set; } 
... 

XAML(在不同勢窗口,稱之爲 「NewRelationship.xaml.cs」

<ComboBox x:Name="cb_from" ItemsSource="{Binding Path=EntityList}" DisplayMemberPath="entityName" SelectedValue="{Binding Path=Entity}" /> 

當然我後來填寫代碼列表。 .. 如果我將列表移動到newRelationship窗口並添加「this.datacontext = this;」它的工作, 當列表位於mainWindow中時,如何使這項工作成爲可能?謝謝.. 。

回答

1

更好的方法是保持EntityList在一個單獨的對象,這兩個窗口可以參考:

class ViewModel 
{ 
    private List<Classes.Entity> _entityList = new List<Classes.Entity>(); 
    public IEnumerable<Classes.Entity> EntityList 
    { 
     get { return _entityList; } 
    } 
} 

partial class MainWindow 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     this.DataContext = new ViewModel(); 
    } 
} 

當創建第二個窗口中,你可以通過ViewModel類的實例吧,並將其設置爲DataContext

+0

太好了,謝謝!現在我創建了一個ViewModel實例(「this.DataContext = new ViewModel();」),我該如何將它傳遞給新窗口?從MainWindow我有這樣的代碼 - 「nrWindow nr = new nrWindow(); nr.ShowDialog();」對新手問題抱歉...再次感謝。 – user2355639

+0

@ user2355639我只是將一個參數添加到'ViewModel'的'nrWindow'構造函數中。 – Andy