Проблема привязки DataGridComboBoxColumn

У меня есть DataGridComboBoxColumn в DataGrid:

  <DataGridComboBoxColumn Header="{x:Static Properties:Resources.Unit}" Width="Auto"

                                    SelectedValueBinding="{Binding UnitUnitId}"
                                    SelectedValuePath="UnitId"
                                    DisplayMemberPath="Name" >
                <DataGridComboBoxColumn.ElementStyle>
                    <Style TargetType="ComboBox">
                        <Setter Property="ItemsSource" Value="{Binding Path=DataContext.Units,RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
                    </Style>
                </DataGridComboBoxColumn.ElementStyle>
                <DataGridComboBoxColumn.EditingElementStyle>
                    <Style TargetType="ComboBox">
                        <Setter Property="ItemsSource" Value="{Binding Path=DataContext.Units,RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
                    </Style>
                </DataGridComboBoxColumn.EditingElementStyle>

            </DataGridComboBoxColumn>

и поле со списком:

<ComboBox x:Name="unitBox" ItemsSource="{Binding Path=Units}" 
              SelectedItem="{Binding TaxSubGroup.Unit}"
               Grid.Row="2"
              Grid.Column="1" Margin="11,11,0,0" HorizontalAlignment="Stretch">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Converter={x:Static c:UnitToStringConverter.Default}}"/>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

Свойство единиц:

   public ObservableCollection<Unit> Units
    {
        get
        {
            return _units;
        }
        set
        {
            if(_units!=value)
            {
                _units = value;
                RaisePropertyChanged("Units");
            }
        }
    }

когда я меняю значение ComboBoxes, значение DataGridComboBoxColumn обновляется автоматически, но изменение значения столбца со списком DataGrid не обновляет значение ComboBoxes. Почему?

ОБНОВЛЕНО

Проблема заключалась в свойстве SelectedValueBinding объекта DataGridComboBoxCulumn. Все, что мне нужно, это добавить свойство UpdateSourceTrigger:

SelectedValueBinding="{Binding UnitUnitId,UpdateSourceTrigger=PropertyChanged}"

person Alex    schedule 22.11.2011    source источник


Ответы (1)


Вы обновляете TaxSubGroup.Unit в установщике свойства UnitUnitId?

В вашем классе модели DataContext сделайте что-то похожее на это...

 public int UnitUnitId
 {
     get 
     {
         return this.unitID; 
     }
     set 
     {
         this.unitID = value;
         this.TaxSubGroup.Unit = Units.FirstOrDefault(u => u.UnitID == value);
         this.NotifyPropertyChange("UnitUnitId");
     }
 }

Это будет соответствовать SelectedItem из Combobox по ссылке.

person WPF-it    schedule 22.11.2011
comment
Спасибо за ваш ответ. На самом деле я использую структуру сущностей, которая по умолчанию реализует интерфейс INotifyPropertyChanged. - person Alex; 22.11.2011