我有一個奇怪的行爲,當我關聯和組合框到我的viewmodel。行爲如下,當我更改組合的選定值時,我對新值進行驗證,如果這個新值無效,我保留舊值並丟棄新值,這樣我就不會提高Inotifypropertychanged,但是與組合框關聯的屬性的getter無論如何都是調用的,這會得到我想要顯示的舊值,但是組合框顯示新值,即使組合框的選定值爲舊且正確的值,我檢查了調試模式。我不知道我該如何解決這個問題,因爲我從未見過這種行爲,任何建議都將不勝感激。WPF ComboBox MVVM奇怪的行爲
這是對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");
}
}
感謝您的幫助
你好,謝謝你的答案,我嘗試了兩種可能性,並結合了兩者,但在我的情況下,這是一個工作,雖然我認爲這兩個都有點哈克,我不明白爲什麼這個工作,因爲從什麼我在msdn中讀到它只是爲了在綁定過程中稍後獲得一個屬性,可以這麼說。我認爲組合框應該「足夠聰明」,以便在「selected」屬性被「通知」時顯示該值,而不是之前選擇的值。但那是我的看法。再次感謝您的幫助 – 2011-05-11 10:51:29