【发布时间】:2011-08-22 16:08:23
【问题描述】:
当我将组合框关联到我的视图模型时,我的行为很奇怪。行为如下,当我更改组合的选定值时,我会验证新值,如果这个新值无效,我会保留旧值并丢弃新值,这样我就不会提高Inotifypropertychanged,但是无论如何都会调用来自与组合框关联的属性的getter,这会获取我想要显示的旧值,但是组合框会显示新值,即使组合的选定值是旧的和正确的值,我在调试模式下检查。我不知道如何解决这个问题,因为我从未见过这种行为,任何建议将不胜感激。
这是 XAML 的代码
<ComboBox Height="23" Name="cbxStatus" HorizontalAlignment="Left"
ItemsSource="{Binding Path=Status, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding Path=SelectedStatus, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Value" Width="130" VerticalAlignment="Center"
IsEnabled="{Binding Path=StatusEnable, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
这是视图模型代码,属性
public Config SelectedStatus
{
get
{
if (ApplicationAction == ApplicationAction.Add)
{
base.Object.State = configManager.BudgetInitStatus();
StatusEnable = false;
}
else
{
StatusEnable = true;
}
return base.Object.State;
}
set
{
if (base.Service.CanChangeBudgetStatus(base.Object, value))
{
base.Object.State = value;
base.Object.IsDirty = true;
}
RaiseOnPropertyChanged("SelectedStatus");
RaiseOnPropertyChanged("AssociateOrderButtonVisibility");
}
}
感谢您的帮助
【问题讨论】:
标签: wpf data-binding mvvm combobox inotifypropertychanged