我有两个tabitems。用户将输入一些数据并将其保存在第一个选项卡上。第二个选项卡列出了保存的数据。我需要的是,当用户在第一个选项卡中保存数据之前选择第二个选项卡时,应显示一个带有是、否和取消的确认消息框。如果用户单击是按钮,则应保存数据并转到第二个选项卡。如果他点击否,则不需要保存数据,最后如果点击取消,选项卡将保留所有输入的数据。我怎么能做这个?
3 回答
尽管我不同意您中断用户从标签到标签的流程的方式,但我会幽默地回答您的问题:
你需要做两件事来完成这项工作:
- 单击选项卡时发生的事件
- 选择的上一个选项卡(您来自的选项卡)
第一项:
选项卡控件有一个可以订阅的 Click 方法:
Click=”MyTabButton_Click”
第二项:
这部分您必须手动完成。您可以在单击事件中设置一个变量,其中包含上次选择的选项卡。设置完成后,您可以检查变量(您之前设置的)以了解之前选择的选项卡。然后,您可以进行所有验证。
为简单起见,您可以在代码隐藏文件中执行以下操作。
我会为要在 WPF 控件中显示和编辑的数据创建一个模型类。使模型实现INotifyPropertyChanged
和IEditableObject
接口。
INotifyPropertyChanged
将允许您绑定到模型。
IEditableObject
将允许您提供编辑、保存和取消功能。
TabControl 有一个SelectionChanged
您可以处理的事件,这将允许您检测用户何时更改选项卡,在此处理程序中您可以System.Windows.MessageBox
用来要求用户保存等,System.Windows.MessageBox.Show()
返回一个MessageBoxResult
对象,您可以使用它来确定用户单击并执行的按钮适当的行动。
这不是一个很好的做事方式,但它使事情变得简单,您可能想研究一些 WPF 设计模式来帮助代码可管理性。
如果您需要进一步解释,请询问。
Delphi 的 TPageControl 有一个带有“AllowChange”参数的 OnChanging 事件。我想WPF中有类似的东西。