我有一个组合框,通过数据绑定填充枚举,这非常有效。此外,所选项目与属性的绑定也可以正常工作。
我已将绑定设置为属性为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>
任何提示?
答案 0 :(得分:2)
属性MyDbType
需要以某种方式告诉绑定系统它已经改变了。为此,您需要在CurrDbSettings对象的类上实现INotifyPropertyChanged
接口,并在PropertyChanged
属性的setter中引发MyDbType
事件。像这样:
public class DbSettings : INotifyPropertyChanged
{
...
public MyTypeEnum MyDbType
{
get { return _myDbType; }
set
{
_myDbType = value;
RaisePropertyChanged("MyDbType");
}
}
...
}