如何将代码后面的窗口和字符串参数传递给User Control

时间:2015-06-23 14:39:23

标签: c# wpf xaml

我有点关闭标题,我需要全局到几个文件,所以我已经建立了一个用户控件(我不能使用主窗口,因为这不是所有文件的全局)但是&#&# 39;我的用户控制需要的两个参数,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的新用户。

1 个答案:

答案 0 :(得分:1)

要访问应用程序的主窗口,您应该按以下方式获取它的运行实例:

     MainWindow myRunnningMainWindow = (Application.Current.MainWindow as MainWindow);

     if(myRunningWindow!=null)
        {
         //Do what you want with the main window
        }