我已经将ListCollectionView作为" ListCollectionView1"到Grid和inGrid我使用过DataGrid。 " ListCollectionView1"包含两个可观察的集合。 " ObservableCollection1" DataGrid和另一个可观察的集合为" ObservableCollection2"在" ObservableCollection1"可观察集合作为Dataource到DataGridComboBoxColumn。 而作为SelectedValueBinding,我使用Property作为" a"来自" ObservableCollection1" 但是我没有在DataGridComboBoxColumn中获取值
<Grid DockPanel.Dock="Bottom" DataContext="{Binding ListCollectionView1>
<DataGrid
ColumnWidth="130"
CanUserAddRows="True"
AutoGenerateColumns="False"
ItemContainerStyle="{StaticResource DataGridRowContentStyle}"
ItemsSource="{Binding ObservableCollection1 }"
CanUserDeleteRows="False">
<DataGridComboBoxColumn Header="Labour" ItemsSource="{Binding Path=ObservableCollection2 , RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" SelectedValueBinding="{Binding Id}" SelectedValuePath="Id" DisplayMemberPath="Id" HeaderStyle="{StaticResource DataGridHeaderStyle}"/>
</DataGrid>
</Grid>
在我的viewModel可观察集合和listcollectionview中
private ListCollectionView _ListCollectionView1;
public ListCollectionView ListCollectionView1
{
get { return _ListCollectionView1; }
set
{
this._ListCollectionView1= value;
OnPropertyChanged("ListCollectionView1");
}
}
public ObservableCollection<Model_ObservableCollection1> ModelObservableCollection1
{
get { return new ObservableCollection<Model_ObservableCollection1>(ViewModel.AllDataCollactions.AllTransactionsDetails.Where(s => s.TransactionsID.Equals(TransactionsID))); }
}
public ObservableCollection<Model_ObservableCollection2> Model_ObservableCollection1
{
get { return new ObservableCollection<Model_ObservableCollection1>(ViewModel.AllDataCollactions.AllTransactionsDetails.Where(s => s.TransactionsID.Equals(TransactionsID) && s.IsJama)); }
}
答案 0 :(得分:1)
试试这个。
<DataGrid x:Name="testGrid" AutoGenerateColumns="True" ItemsSource="{Binding ObservableCollection}" >
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Labour" DisplayMemberPath="test">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.ObservableCollection2 , RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.ObservableCollection2, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
在样式绑定中添加 DataContext ,而不仅仅是属性名称。您只是设置ColumnBoxHeader的ItemsSource,这是没有意义的。它不知道如何填充ComboBox在控件子项中的位置。