【发布时间】:2016-01-18 14:28:04
【问题描述】:
我正在使用DataGridComboBoxColumn,如果我在 XAML 中将数据上下文设置为窗口,则意味着ItemsSource 在combobox 列中加载良好。如果我在InitializeComponent() 之后的MainWindow 构造函数后面的代码中将数据上下文设置为窗口,则Itemssource 不会加载到组合框列中。
您能否就此提出任何建议?
代码:
<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");
}
}
【问题讨论】:
-
你能把代码贴出来 -
MainWindow你试过了吗? -
我在mainwindow.xaml中添加了代码,请帮助我。它的迫切要求。
-
来自 Code behind 的绑定不起作用?
-
在
ComboBoxColumn.ItemSource=YourDataScource后面的代码中试试这个 -
在 XAML 和代码隐藏中分配
DataContext值在理论上没有区别。有紧急要求的人应该特别小心present their question in a clear, answerable way。请提供a good, minimal, complete code example,该a good, minimal, complete code example 可以可靠地重现您尝试解决的问题。