2015-10-20 49 views
-2

我正在使用DataGridComboBoxColumn,如果我將datacontext設置爲XAML中的Window,則意味着ItemsSourcecombobox列中正常加載。如果我在InitializeComponent(),Itemssource未在組合框列中加載後在MainWindow構造函數中將後臺數據環境設置爲代碼後面的窗口。代碼背後的數據上下文集與xaml有什麼不同?

請您分享一下對此的建議嗎?

代碼:

<Window.DataContext> 
     <local:OrderInfoRepositiory/> 
    </Window.DataContext> 

<DataGrid Name="dataGrid1" 
        Width="308" 
        Height="200" 
        HorizontalAlignment="Left" 
        VerticalAlignment="Top" 
        AutoGenerateColumns="False" 
        ItemsSource="{Binding OrderInfoCollection}"> 
      <DataGrid.Columns> 

       <DataGridComboBoxColumn x:Name="ComboBoxColumn"           
             Header="Position" 
             ItemsSource="{Binding ComboItemSource}" 
             /> 
       <DataGridTextColumn Binding="{Binding OrderID}" Header="Name" /> 
      </DataGrid.Columns> 
     </DataGrid> 

OrderInfoRepository定義:

public class OrderInfoRepositiory : INotifyPropertyChanged 
    { 

     private ObservableCollection<string> comboitemSource; 

     public ObservableCollection<string> ComboItemSource 
     { 
      get 
      { 
       return comboitemSource; 
      } 
      set 
      { 
       comboitemSource = value; 
       RaisePropertyChanged("ComboItemSource"); 
      } 
     } 

     ObservableCollection<OrderInfo> orderCollection; 
     public ObservableCollection<OrderInfo> OrderInfoCollection 
     { 
      get { return orderCollection; } 
      set { orderCollection = value; RaisePropertyChanged("OrderInfoCollection"); } 
     }   
     public OrderInfoRepositiory() 
     { 
      orderCollection = new ObservableCollection<OrderInfo>(); 
      OrderInfoCollection = GenerateOrders(); 

      ComboItemSource = new ObservableCollection<string>(); 
      ComboItemSource.Add("Germany"); 
      ComboItemSource.Add("Mexico"); 
      ComboItemSource.Add("Sweden"); 
      ComboItemSource.Add("France"); 
      ComboItemSource.Add("Spain"); 
      ComboItemSource.Add("Canada"); 
     } 
} 
+0

你可以發佈代碼 - 到目前爲止您試過的'MainWindow'嗎? –

+0

我在mainwindow.xaml中添加了代碼,請幫助我。其迫切的要求。 –

+0

從代碼後面的綁定不工作? –

回答

-1

有是在設置在XAML的DataContext和後面的代碼非常小的技術差異。

當你在XAML的用戶界面背後的代碼定義它會首先初始化,然後DataContext的同時,如果你在XAML本身定義它在初始化UI本身DataContext初始化初始化。

除非你缺少在PropertyChanged通知您DataContext不應該在XAML的代碼隱藏或XAML本身定義DataContext之間的任何明顯的區別

+0

我已經使用了屬性changed。也由此http://www.thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/#comment-82716 one,i我能夠達到我的要求。除此之外還有其他方法嗎? –

+0

你可以發佈'OrderInfoRepositiory'的類定義嗎? – Sandesh

+0

是的,我發佈了。 –

相關問題