2017-08-28 49 views
-6

我试图访问公共部分类ChooseExercises访问类窗口,但它抛出一个异常:不能从另一个类C#

System.InvalidCastException: 'Unable to cast object of type 'GymCheckList.YourProgress' to type 'GymCheckList.ChooseExercises'.' 

我想要的方式访问它是:

namespace GymCheckList 
{ 
    /// <summary> 
    /// Interaction logic for YourProgress.xaml 
    /// </summary> 
    public partial class YourProgress : Window 
    { 
     public YourProgress() 
     { 
      InitializeComponent(); 
     } 

private void TabThursday_Loaded(object sender, RoutedEventArgs e) 
{ 
    ChooseExercises ce = (ChooseExercises)Application.Current.MainWindow; 
    var lol = ce; 
} 

如果我使用ChooseExerises CE =新ChooseExercises();它给了我空白的意义。什么可能导致异常? 谢谢!

编辑

在ChooseExeprises类我使用了类似的代码来访问MainWindow类,它工作正常:

namespace GymCheckList 
{ 
    /// <summary> 
    /// Interaction logic for ChooseExercises.xaml 
    /// </summary> 
    public partial class ChooseExercises : Window 
    { 
     public ChooseExercises() 
     { 
      InitializeComponent(); 
     } 
     private List<string> data = new List<string>(); 
     public void ComboBox_Loaded(object sender, RoutedEventArgs e) 
     { 
      MainWindow kek = (MainWindow)Application.Current.MainWindow; 
+0

它们是否具有相同的命名空间?或者是导入的命名空间? –

+5

“什么可能导致异常” - > Application.Current.MainWindow不是ChooseExercises类型。设置一个断点并检查实际的类型。 –

+0

@AshkanMobayenKhiabani是的,他们有相同的命名空间.. – Alex

回答

0

显然你的主窗口是YourProgress但你可以尝试去的一个参考ChooseExercises窗口使用Application.Current.Windows集合:

private void TabThursday_Loaded(object sender, RoutedEventArgs e) 
{ 
    ChooseExercises ce = Application.Current.Windows.OfType<ChooseExercises>().FirstOrDefault(); 
    ... 
} 
+0

谢谢,它的工作原理! 但为什么我不能使用它: ChooseExercises ce =(ChooseExercises)Application.Current.MainWindow; ? – Alex

+0

因为Application.Current.MainWindow不返回ChooseExercises窗口。如果您有其他问题,请再次阅读我的答案并提出一个新问题。 – mm8