Confirmation on switching between tabs

倖福魔咒の 提交于 2021-01-28 05:40:49

问题


I have two tabitems. User will enter some data and save it on the first tab. The second tab lists the saved data. What I need is when the user select the second tab before saving data in first tab a confirmation message box with Yes, No and Cancel should be shown. If the user clicks Yes button the data should be saved and go to the second tab. If he hits No, the data need not to be saved and finally if Cancel is hit the tab will retain with all entered data. How can i make this?


回答1:


To keep things simple you can do the follwing in the Code Behind file.

I'd create a Model class of the data you want to display and edit in the WPF Control. Make the Model implement the INotifyPropertyChanged and IEditableObject interfaces.

INotifyPropertyChanged will allow you to Bind to the Model. IEditableObject will allow you to provide Edit, Save and Cancel functionality.

The TabControl has a SelectionChanged Event you can handle, that will allow you to detect when the user changes tabs, in this handler you can use System.Windows.MessageBox to ask the user to save etc, System.Windows.MessageBox.Show() returns a MessageBoxResult Object you can use to detirmine what button the user clicked and perform the appropiate action.

This is not a geat way to do things, but it keeps things simple, you may want to look into some WPF design Patterns to help with Code Manageability.

If you need anything explained further, just ask.




回答2:


Although I disagree with the way you interrupt the user's flow from tab to tab I'm going to humor you and answer the question:

You'll need two things to get this done:

  1. The event that occurs when a tab was clicked
  2. The previous tab that was selected (the one you came from)

The first item:

The tab control has a Click method that you can subscribe to:

Click=”MyTabButton_Click”

The second item:

This part you'll have to do manually. You can set a variable in the click event which contains what tab was last selected. Once this is set you can check a variable (which you previously set) as to what tab was previously selected. You can then do all your validation.




回答3:


Delphi's TPageControl has an OnChanging event with an "AllowChange" parameter. I guess there is something similar in WPF.



来源:https://stackoverflow.com/questions/906490/confirmation-on-switching-between-tabs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!