我正在WPF mvvm环境中工作。WPF mvvm绑定,获取/设置值:防止更新值问题
我有一些绑定的变量和数据从cs文件到xaml。
一个不同于其他人:它是我的tabsCollection中选定选项卡的索引。当用户有多个选项卡打开并且有MODS保存时,我会向他展示一个对话框。如果他碰到“ok”,他会继续更改标签,如果他点击“取消”,标签必须保持不变。
这是我的代码:
private int p_SelectedDocumentIndex;
public int SelectedDocumentIndex{ get { return p_SelectedDocumentIndex; }
set {
if (tabsCollection.Count() > 1 && CanSave() == true)
{
if (dm.ShowMessage1(ServiceContainer.GetService<DevExpress.Mvvm.IDialogService>("confirmYesNo")))
{
p_SelectedDocumentIndex = value;
base.RaisePropertiesChanged("SelectedDocumentIndex");
}
//else {
// CODE FOR NOT CHANGE THE VALUE
//}
}
else {
p_SelectedDocumentIndex = value;
base.RaisePropertiesChanged("SelectedDocumentIndex");
}
}
}
所以,问题是:我怎么能不“设置”一节中适用的变化? (像撤消,我认为)
这是最简单的方法来做到这一点,但如果这种方法不正确,我该怎么办?
上一个失败的尝试:
1)
p_SelectedDocumentIndex = p_SelectedDocumentIndex
base.RaisePropertiesChanged("SelectedDocumentIndex");
2)
base.RaisePropertiesChanged("SelectedDocumentIndex");
3)
nothing in the else branch
以下是什么回报? dm.ShowMessage1(ServiceContainer.GetService(“confirmYesNo”)) –
Godspark
2014-10-02 08:02:34
我在问题中说过...它是一个索引。当前活动选项卡的索引。当我改变它时,我会向用户显示一个对话框。如果他点击“取消”,我不想更改值,所以我需要删除新值并保留前一个值。 – 2014-10-02 08:03:52
我认为ShowMessage通常会返回一个dialogResult,并且您必须检查DialogResult是否正确或取消,然后基于dialogresult,您将设置您的私有变量。否则,你不会设置它,以保留'oldvalue' – Krishna 2014-10-02 08:37:01