1

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

4

3 回答 3

1

尽管我不同意您中断用户从标签到标签的流程的方式,但我会幽默地回答您的问题:

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

  1. 单击选项卡时发生的事件
  2. 选择的上一个选项卡(您来自的选项卡)

第一项:

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

Click=”MyTabButton_Click”

第二项:

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

于 2009-05-25T12:16:19.780 回答
1

为简单起见,您可以在代码隐藏文件中执行以下操作。

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

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

TabControl 有一个SelectionChanged您可以处理的事件,这将允许您检测用户何时更改选项卡,在此处理程序中您可以System.Windows.MessageBox用来要求用户保存等,System.Windows.MessageBox.Show()返回一个MessageBoxResult对象,您可以使用它来确定用户单击并执行的按钮适当的行动。

这不是一个很好的做事方式,但它使事情变得简单,您可能想研究一些 WPF 设计模式来帮助代码可管理性。

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

于 2009-05-25T12:37:51.797 回答
0

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

于 2009-05-25T12:15:28.003 回答