显示一个新的页面,它取消了我的复选框.我该如何预防呢?

本文关键字:复选框 我的 取消 何预防 一个 显示 | 更新日期: 2023-09-27 18:09:53

所以我有这个应用程序,你可以从不同的页面中选择,就像一个页面导航系统…我在它们上面都有一个复选框。如果我选中了SecondPage();的复选框然后又去了thirdPage();那么SecondPage();的复选框就会被选中,我该如何防止这种情况呢?

/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
   public MainWindow()
   {
       InitializeComponent();
   }
    bool isCHecked = true;
    private void button_Click(object sender, RoutedEventArgs e)
    {
        main.Content = new SecondPage();
    }
    private void button1_Click(object sender, RoutedEventArgs e)
    {
        main.Content = new thirdPage();
    }
}

显示一个新的页面,它取消了我的复选框.我该如何预防呢?

您总是创建页面的新实例,因此它将是一个新的副本,并且以前的状态将丢失,其中一个解决方案是在主窗口中创建字段,如:

namespace CheckboxesAndPages
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private thirdPage _thirdPage;
        private SecondPage _SecondPage;
        public MainWindow()
        {
            InitializeComponent();
        }
        bool isCHecked = true;
        private void button_Click(object sender, RoutedEventArgs e)
        {
            _SecondPage = _SecondPage != null ? _SecondPage : new SecondPage(); 
            main.Content = _SecondPage;
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            _thirdPage = _thirdPage !=null ? _thirdPage : new thirdPage();
            main.Content = _thirdPage;
        }
    }

或者您也可以创建属性:

namespace CheckboxesAndPages
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            private thirdPage _thirdPage;
            private SecondPage _SecondPage;
            private ThirdPage ThirdPage 
            {
               get
               { 
                   _thirdPage = _thirdPage !=null ? new thirdPage();
                   return _thirdPage;
               }
               set
               {
                   _thirdPage = value;
               }
           }
           private SecondPage SecondPage
            {
               get
               { 
                   _SecondPage= _SecondPage!=null ? new SecondPage();
                   return _SecondPage;
               }
               set
               {
                   _SecondPage= value;
               }
           }
            private SecondPage _SecondPage;
            public MainWindow()
            {
                InitializeComponent();
            }
            bool isCHecked = true;
            private void button_Click(object sender, RoutedEventArgs e)
            { 
                main.Content = SecondPage;
            }
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                main.Content = ThirdPage;
            }
        }

或者你可以这样写空条件:

_SecondPage = _SecondPage ?? new SecondPage();