WPF点击不同界面上的按钮实现界面切换

网上看到的都是在一个界面上使用同一个按钮实现界面切换,这里我来做个不同界面上的不同按钮实现界面切换。如下图:

WPF点击不同界面上的按钮实现界面切换_第1张图片

可以看到右下角有个“查询数据”按钮,当点击查询按钮时切换到另一个界面,如下图:

WPF点击不同界面上的按钮实现界面切换_第2张图片

虽然长得很像,但它们绝不是同一个按钮,当点击返回查询时,将回到前面的界面。

代码如下:

第一个界面叫DataManage,其xmal:


    
        
            
                
                
            
        
    
    
        
            
            
            
            
        
        
            
                
                
                
                
            
                
                    
                    
                    
                    
                    
                    
                    
                    
                    
                
            

后台代码:

在命名空间下定义个委托:

public delegate void CtrlSwitchHandler();   //定义委托

然后,定义事件,并在点击查看数据时触发事件:

public event CtrlSwitchHandler CtrlSwitchEvent;               //定义事件,用于界面切换 
/// 
        /// 查看数据
        /// 
        /// 
        /// 
        private void CatData_Click(object sender, RoutedEventArgs e)
        {
            if (this.dgData.SelectedItem == null)
            {
                MyDialog md = new MyDialog(1, "未选择需要查看的对象,请选择!");
                md.Show();
            }
            else
            {
                Result_NumStr = ((DataRowView)this.dgData.SelectedItem).Row["id"].ToString(); 
                if(Result_NumStr != "")
                {
                    //触发事件改变父窗口的值
                    if (CtrlSwitchEvent != null)
                    {
                        CtrlSwitchEvent();
                    }
                }
                else
                {
                    MyDialog md = new MyDialog(1, "不允许查看空值!");
                    md.Show();
                }
            }
        }

返回查询原理一样的,我这里界面名叫CatDataControl,在下面有用到,只是不要再定义委托了,这里就不讲述。

最后用一个UserControl装载这两个控件,也可以直接用mainwindow装载,我这里是项目需要,故使用UserControl控件,实现切换代码如下:

xaml:


    
        
    

后台代码:

public partial class SwitchInterface : UserControl
    {
        public SwitchInterface()
        {
            InitializeComponent();
        }

        DataManage dataManage = new DataManage();         //用于切换的用户控件--数据管理控件
        private double originalHeight = 0.0;
        private void SwInterface_Load(object sender, RoutedEventArgs e)
        {
            originalHeight = stackPanelData.ActualHeight;
            dataManage.CtrlSwitchEvent += new CtrlSwitchHandler(CtrlSwitch_CatData);
            LoadStackPanelRight(dataManage);
        }

        //实现界面切换到查看数据界面
        private void CtrlSwitch_CatData()
        {
            CatDataControl catData = new CatDataControl(dataManage.Result_NumStr);                          //用于切换的用户控件--查看数据控件
            catData.CtrlSwitchEvent += new CtrlSwitchHandler(CtrlSwitch_dataManage);
            LoadStackPanelRight(catData);
        }

        //实现界面切换到数据管理界面
        private void CtrlSwitch_dataManage()
        {
            LoadStackPanelRight(dataManage);
        }

        //加载用户控件功能函数
        private void LoadStackPanelRight(UserControl userControl)
        {
            stackPanelData.Children.Clear();
            stackPanelData.Children.Add(userControl);
        }
    }
如此即可实现,这里面的代码不是每个都有用,这只是部分代码,但绝对能实现界面切换。

你可能感兴趣的:(WPF)