XAML WPF:如何在代码隐藏中将数据从主窗口传递到PAGE?

3ks5zfa0  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(128)

**大家好,**我有一个关于如何将数据从MainWindow传递到Page的简单问题。

我在谷歌上搜索/和这里...但我没有找到确切的答案。
我想修改、更改Page 1(SW_GUI.xaml)元素(如标签内容),或稍后更改其他GUI元素内容。但是,我只能通过以下方式联系(我自己):首先对SW_GUI.xaml的标签进行更改,然后创建此页面(SW_GUI.xaml)的示例并加载到MainWindow内容的框架中。但是,如果此页面加载过一次,我无法自动修改/更新标签,除非将SW_GUI页面再次加载到框架中。您可以在下面找到非常简单的初始代码。
主窗口. xaml.cs文件

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        // ACTION one - just try reason


        SW_GUI sW_GUI = new SW_GUI();
        sW_GUI.RESULT_MAKER(true);

        CenterFrame.Content = sW_GUI;

        
        

    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
    
    // ACTION two - just try reason
        SW_GUI sW_GUI = new SW_GUI();

        sW_GUI.RESULT_MAKER(false);
        CenterFrame.Navigate(sW_GUI);

    }
}

-----------------
PAGE1 aka SW_GUI

软件_图形用户界面. xaml.cs文件

public partial class SW_GUI : Page
{
    public SW_GUI()
    {
        InitializeComponent();
    }


    public void RESULT_MAKER ( bool results)
    {
        if (results==true)
        {

            RESULT_BOX.Background = new SolidColorBrush(Color.FromRgb(0, 245, 95));

            RESULT_BOX.Text = "(PASS)";
           

        }
        else
        {

            RESULT_BOX.Background = new SolidColorBrush(Color.FromRgb(245, 53, 0));

            RESULT_BOX.Text = "(FAIL)";
        }

       
    }
}

**SHORT逻辑:**Button_Click on mainwin调用sW_GUI.RESULT_MAKER方法并对标签进行非常简单的更改。然后,我将sW_GUI示例加载到CenterFrame. Content中。
**问题:**您是否可以提供一个小指南或给予一个简单的示例,我必须添加什么,改变,以实现我不需要加载页面到框架中的每一种情况下,当我想更新标签内容等.

非常感谢。

mepcadol

mepcadol1#

你好,我在MainWindow.cs中做了一个小示例:

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private SW_GUI SW_GUIPage = new SW_GUI();  

        private void ActivateSW_GUI(bool SetResult)
        {
            SW_GUI SW = SW_GUIPage;
            SW.RESULT_MAKER(SetResult);                                    
            if (!(CenterFrame.Content is SW_GUI))
            {
                CenterFrame.Content = SW_GUIPage;                         
            }           

        }

        int ActionSetter = 0;

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (ActionSetter == 0)
            {
                ActivateSW_GUI(true);
                ActionSetter = 1;
            }
            else if (ActionSetter == 1)
            {
                ActivateSW_GUI(false);
                ActionSetter = 0;
            }
        }

    }

相关问题