2011-04-04 40 views
0

我有一個組合框,它通過數據綁定填充枚舉,這工作得很好。所選項目與屬性的綁定也可以正常工作。數據綁定WPF組合框不起作用twoway

我已將該屬性的綁定設置爲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> 

任何提示?

回答

2

屬性MyDbType需要以某種方式告訴綁定系統它已經改變。爲此,您需要在CurrDbSettings對象的類上實現INotifyPropertyChanged接口,並在MyDbType屬性的設置器中創建PropertyChanged事件。就像這樣:

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

有道理:)謝謝!這也是界面實現的方法。 http://msdn.microsoft.com/en-us/library/ms229614%28v=VS.90%29.aspx – Simon 2011-04-04 14:31:50