WPF Datagrid ComboBoxColumnBinding
Bonjour,
Je cherche à lier un combobox de ma datagrid à une ObservableCollection , mon viewmodel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public ViewModel vm { get; set; }
public class ViewModel
{
public ObservableCollection<Object1> Collec1{ get; set; }
public ICollectionView CV_Collec1 { get; set; }
public ViewModel()
{
Collec1 = new ObservableCollection<Object1>();
CV_Collec1 = CollectionViewSource.GetDefaultView(Collec1);
}
} |
avec Object1 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| public class Object1 : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<Object2> SubCollec
{
get { return _SubCollec; }
set
{
if (_SubCollec == value) return;
_SubCollec = value;
OnPropertyChanged("SubCollec");
}
}
private string _Property1;
public string Property1
{
get { return _Property1; }
set
{
if (_Property1 == value) return;
_Property1 = value;
OnPropertyChanged("Property1");
}
}
private Object2 _SelectedObject;
public Object2 SelectedObject
{
get { return _SelectedObject; }
set
{
if (_SelectedObject == value) return;
_SelectedObject = value;
OnPropertyChanged("SelectedObject");
}
}
} |
XAML :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <DataGridComboBoxColumn x:Name="CB_1" Header="Column1" DisplayMemberPath="SelectedObject.Name" SelectedValueBinding="{Binding SelectedObject}">
<DataGridComboBoxColumn.ElementStyle >
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding DataContext.Collec1.SubCollec, RelativeSource={RelativeSource AncestorType={x:Type DataGrid }}}"></Setter>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle >
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding DataContext.Collec1.SubCollec, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"></Setter>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn> |
ObservableCollection<Object2> change en fonction de la valeur de Property1 (cette partie fonctionne) et doit normalement alimenter ma ComboBox
SelectedObject est destiné a représenter la valeur selectionnée.
La combobox reste vide et j'ai le message suivant :
System.Windows.Data Error: 40 : BindingExpression path error: 'SubCollec' property not found
Pouvez-vous svp m'aider?
D'avance merci