数据绑定WPF组合框不能双向工作

时间:2011-04-04 14:07:01

标签: wpf data-binding c#-3.0 combobox

我有一个组合框,通过数据绑定填充枚举,这非常有效。此外,所选项目与属性的绑定也可以正常工作。

我已将绑定设置为属性为TwoWay,但如果属性MyDbType发生更改,则组合框不会更改。

XAML:

<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 个答案:

答案 0 :(得分:2)

属性MyDbType需要以某种方式告诉绑定系统它已经改变了。为此,您需要在CurrDbSettings对象的类上实现INotifyPropertyChanged接口,并在PropertyChanged属性的setter中引发MyDbType事件。像这样:

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