Связывающий список WPF не работает в двух направлениях - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть выпадающий список, который заполняется перечислениями через привязку данных, и это работает довольно хорошо.Также хорошо работает привязка выбранного элемента к свойству.

Я установил привязку к свойству TwoWay, но если свойство MyDbType изменится, поле со списком изменится.

<Window.Resources>
    <ObjectDataProvider x:Key="dbEnum" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
        <ObjectDataProvider.MethodParameters>
            <x:Type TypeName="utils:DbType" />
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
</Window.Resources>

<ComboBox Margin="0" Name="comboDbType" VerticalAlignment="Center" Grid.Row="1" Height="25" 
  ItemsSource="{Binding Source={StaticResource dbEnum}}" 
  SelectedItem="{Binding Path=CurrDbSettings.MyDbType, 
    RelativeSource={RelativeSource Mode=FindAncestor, 
      AncestorType={x:Type local:MainWindow}}, 
    Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
  Grid.ColumnSpan="1" Grid.Column="1">
</ComboBox>

Есть подсказки?

1 Ответ

2 голосов
/ 04 апреля 2011

Свойство MyDbType должно как-то сообщать системе привязки, что оно изменилось. Для этого есть интерфейс INotifyPropertyChanged, который необходимо реализовать в классе объекта CurrDbSettings и вызвать событие PropertyChanged в установщике свойства MyDbType. Как то так:

public class DbSettings : INotifyPropertyChanged
{
   ...
   public MyTypeEnum MyDbType
   {
       get { return _myDbType; }
       set 
       { 
           _myDbType = value;
           RaisePropertyChanged("MyDbType");
       }
   }
   ...
}
...