В настоящее время я занимаюсь разработкой небольшого wpf-компонента, но уже 2 дня я борюсь со странной проблемой внутри DataGrid.Я пытаюсь перезагрузить ItemSource DataGridComboBoxColumn.Невозможно связать этот столбец в xaml с ObservableList
My .xaml:
<DataGrid Grid.Row="3" Height="auto" Margin="0, 15, 0, 0" x:Name="mapAttributesTable" ColumnWidth="Auto"
SelectedIndex="0" ItemsSource="{Binding LinkedItems, Mode=TwoWay}" SelectedItem ="{Binding Path=CurrentColumnObject, Mode=TwoWay}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridComboBoxColumn x:Name="comboBox_TableFields" Header="TableFields" ItemsSource="{Binding Path=DataContext.Fields, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}">
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="{x:Type ComboBox}">
<EventSetter Event="SelectionChanged" Handler="ComboBoxColumn_SelectionChanged"/>
<Setter Property="IsEditable" Value="True" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
<DataGridTextColumn Header="JmsSubClass" Binding="{Binding Path= JmsSubClass}"/>
<DataGridTextColumn Header="JmsFieldName" Binding="{Binding Path=JmsFieldName}"/>
</DataGrid.Columns>
</DataGrid>
Мой код:
public IMap SelectedItem
{
get { return _selectedItem; }
set
{
if (value != null)
{
_selectedItem = value;
this.Items = new ObservableCollection<ILink>(SelectedItem.Links);
OnPropertyChanged();
this.Fields = new ObservableCollection<string>(SelectedDataMapItem.TableFields);
OnPropertyChanged("Fields");
}
}
}
private ObservableCollection<ILink> _items = new ObservableCollection<ILink>();
/// <summary>
/// Holds each created entry
/// </summary>
public ObservableCollection<ILink> Items
{
get { return this._items; }
set
{
if (value != null)
{
this._items= value;
}
}
}
/// <summary>
///
/// </summary>
private ILink _currentColumnObject;
/// <summary>
///
/// </summary>
public ILink CurrentColumnObject
{
get { return _currentColumnObject; }
set
{
if (value != null)
{
this._currentColumnObject = value;
OnPropertyChanged();
}
}
}
private ObservableCollection<string> _fields = new ObservableCollection<string>();
public ObservableCollection<string> Fields
{
get
{
return _fields;
}
set
{
if (value != null)
{
this._fields = value;
}
}
}
Если кто-либо (разработчик)) есть идея, будет неплохо решить эту проблему.
с наилучшими пожеланиями