如何将窗口和字符串参数从代码后面传递到用户控件

本文关键字:控件 用户 代码 窗口 参数 字符串 | 更新日期: 2023-09-27 17:59:16

我有一个有点偏离的标题,我需要对一些文件进行全局设置,所以我制作了一个用户控件(我不能使用主窗口,因为这不是所有文件的全局设置)。但是,我的用户控件需要两个参数,ScreenNameMainWindow,以便在单击主页按钮时导航。以下是我迄今为止所尝试的:

public Header(MainWindow mainWindow, string screenName)
    {
        InitializeComponent();
        DataContext = this;
        ScreenName = screenName;
        MainWindow = mainWindow;
        ScreenNameTextBlock.Text = ScreenName;
    }
    public string ScreenName { get; set; }
    public MainWindow MainWindow { get; set; }
    private void Hyperlink_OnClick(object sender, RoutedEventArgs e)
    {
        //need to navigate home here
        MainWindow.LoadScreenByCode("Menu");
    }

您可能会假设相应的XAML只是一个超链接和一个文本块,但如果您需要它,请告诉我。

我可以包括这样的用户控制:

<controls:Header x:Name="Header"></controls:Header>

但是我不知道如何分配参数。如果我在代码后台尝试,我可以访问这样的值:

Header.MainWindow = Shell;
Header.ScreenName = "Name";

但这会导致值为null。很抱歉,如果这是一个简单的问题,我是UserControls的新手。

如何将窗口和字符串参数从代码后面传递到用户控件

要访问应用程序的主窗口,您应该获得它的运行实例,如下所示:

     MainWindow myRunnningMainWindow = (Application.Current.MainWindow as MainWindow);
     if(myRunningWindow!=null)
        {
         //Do what you want with the main window
        }