从另一个类更改框架内的页面

时间:2015-11-10 10:19:35

标签: c# frame uwp

所以我试过关注UWP Accessing Frame for page navigation through Usercontrol an Object? 但我得到了一个nullpointer。

我有一个带有splitview,框架和汉堡菜单的主页。从这里我控制加载到框架中的页面 我还有一个配置文件视图,我想在用户单击按钮时调用新视图。让我添加代码:

的MainPage:

public sealed partial class MainPage : Page

{

    Profile profile = new Profile();

    public MainPage()
    {
        this.InitializeComponent();
        MyFrame.Navigate(typeof(Financial));
        BackButton.Visibility = Visibility.Collapsed;
        Title.Margin = new Thickness(68,0,0,0);

        profile.OnNavigateParentReady += OnCreateUser;

    }

....



    public void OnCreateUser(object sender, RoutedEventArgs e)
    {
        if (MySplitView.Content != null)
            ((Frame)MySplitView.Content).Navigate(typeof(CreateUser));
        Title.Text = "Create User";
        BackButton.Visibility = Visibility.Visible;
        Title.Margin = new Thickness(0, 0, 0, 0);

    }

}

简介:

public sealed partial class Profile : Page

{

    public delegate void MyEventHandler(object source, RoutedEventArgs e);

    public event MyEventHandler OnNavigateParentReady;


    private string _profileName;
    private string _password;

    private Dictionary<string, string> usersDictionary = new Dictionary<string, string>();

    public Profile()
    {
        this.InitializeComponent();
        usersDictionary.Add("Casper", "12345");
    }

    private void Login_Click(object sender, RoutedEventArgs e)
    {
        _profileName = ProfileName.Text;
        _password = PasswordBox.Password;

        if (usersDictionary.ContainsKey(_profileName))
        {
            if (usersDictionary[_profileName] == _password)
            {
                ProfileName.Text = "LOGIN SUCCES!";
            }
        }
        else
        {

        }
    }

    private void CreateUser_Click(object sender, RoutedEventArgs e)
    {
        OnNavigateParentReady(sender, e);
    }
}

我可以使用Frame.navigate更改框架,但我想编辑标题和边距以及所有其他OnCreateUser。我该怎么做?

编辑:我应该说我在这一行得到了一个nullpointer:OnNavigateParentReady(sender, e);

1 个答案:

答案 0 :(得分:2)

当您的OnNavigateParentReady控件上调用Click事件时,因为CreateUser事件还没有侦听器,所以抛出了该空引用异常。您应该尝试以下方法:

if (OnNavigateParentReady != null)
{
    OnNavigateParentReady(sender, e);
}

此外,您在profile类中创建的MainPage对象 - 在哪里使用?有没有在任何地方展示过?似乎该对象不是显示在您的应用程序中的对象。相反,正在使用Profile的其他一些实例!

profile课程的MainPage成员字段可能不是导航时实际显示的Page。尝试在实际显示的Profile页面对象上设置事件侦听器。