2015-10-20 50 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

是的,我发布了。 –

相关问题