在WPF应用程序中切换页面 - 无法转到一页

时间:2013-02-08 21:04:07

标签: c# wpf user-controls

我在WPF应用程序中创建了切换页面。

public static class Switcher
    {
        public static MainWindow pageSwitcher;

        public static void Switch(UserControl newPage)
        {
            pageSwitcher.Navigate(newPage);
        }
    }

一切正常,我可以在页面之间移动,但我不能只在一页(添加)中转到一页(问题页面)。在其他页面中,我没有任何问题可以访问此页面。

在Add class中:

private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            Switcher.Switch(new Question());

        }

我收到错误:

  

参数1:无法从'Application.Question'转换为   'System.Windows.Controls.UserControl'   'Application.Switcher.Switch(System.Windows.Controls.UserControl)'有   一些无效的论点

从任何其他页面我都可以毫无问题地进入问题页面。从添加页面我可以转到任何其他页面,而不仅仅是问题页面。

问题类:

namespace Application.Pages
{

public partial class Question : UserControl
{
    public Question()
    {
        InitializeComponent();
    }

    private void Add_pyt_Click(object sender, RoutedEventArgs e)
    {
        Switcher.Switch(new Add());
    }

    private void page1_Click(object sender, RoutedEventArgs e)
    {
        Switcher.Switch(new Page1());
    }
  }
}

我的Page1课程,当问题页面运行良好时。

public partial class Page1 : UserControl
    {
        public Page1()
        {
            InitializeComponent();

        }

        private void bt_Add_Click(object sender, RoutedEventArgs e)
        {

            Switcher.Switch(new Question());
        }
     }

2 个答案:

答案 0 :(得分:1)

这很可能是因为您的Question课程实际上不是UserControl。在另一个示例中,您明确传递了UserControl

public static void Switch(UserControl newPage)
{
     pageSwitcher.Navigate(newPage);
}

验证Question类是否继承自UserControl

public class Question : UserControl
{ ... }

如果您实际上是继承自UserControl,请尝试正确地进行投射。

Switcher.Switch((UserControl)new Question());

答案 1 :(得分:0)

我解决了。我改变了页面名称,现在它的工作。可能我有相同名称的财产,这阻止了它。