确认在标签之间切换

时间:2009-05-25 12:09:49

标签: c# .net wpf tabcontrol tabcontainer

我有两个tabitems。用户将输入一些数据并将其保存在第一个选项卡上。第二个选项卡列出已保存的数据。我需要的是当用户在第一个选项卡中保存数据之前选择第二个选项卡时,应显示一个确认消息框,其中显示是,否和取消。如果用户单击是按钮,则应保存数据并转到第二个选项卡。如果他点击否,则不需要保存数据,最后如果点击取消,则选项卡将保留所有输入的数据。我该怎么做?

3 个答案:

答案 0 :(得分:1)

虽然我不同意你从用标签到标签中断用户流程的方式,但我会幽默你并回答这个问题:

完成这项工作需要两件事:

  1. 点击标签时发生的事件
  2. 上一个选中的标签(您来自的标签)
  3. 第一项:

    选项卡控件有一个可以订阅的Click方法:

    Click=”MyTabButton_Click”
    

    第二项:

    这部分你必须手动完成。您可以在单击事件中设置一个变量,其中包含上次选择的选项卡。设置此项后,您可以检查变量(您之前设置的变量),以查看之前选择的选项卡。然后,您可以进行所有验证。

答案 1 :(得分:0)

Delphi的TPageControl有一个带有“AllowChange”参数的OnChanging事件。我想WPF中有类似的内容。

答案 2 :(得分:0)

为了简单起见,您可以在Code Behind文件中执行以下操作。

我将在WPF控件中创建要显示和编辑的数据的Model类。使模型实现INotifyPropertyChangedIEditableObject接口。

INotifyPropertyChanged将允许您绑定到模型。 IEditableObject将允许您提供编辑,保存和取消功能。

TabControl有一个SelectionChanged事件你可以处理,它允许你检测用户何时更改标签,在这个处理程序中你可以使用System.Windows.MessageBox要求用户保存等,{{ 1}}返回一个System.Windows.MessageBox.Show()对象,您可以使用它来去除用户点击的按钮并执行适当的操作。

这不是一种简单易行的方法,但它使事情变得简单,您可能需要研究一些WPF设计模式以帮助实现代码可管理性。

如果您需要进一步解释,请询问。