3 回答
TA贡献1802条经验 获得超5个赞
这InvalidCastException意味着您的应用程序的主窗口是TimeWindow.
如果确实有一个MainWindowopen,你可以像这样获取它的引用:
private void DemoVideo_MediaEnded(object sender, RoutedEventArgs e)
{
MainWindow mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
if (mainWindow != null)
mainWindow.SkipVideo();
}
有更好的方法来处理这个问题,例如使用 @Christopher 建议的 MVVM 设计模式,但这可能是考虑到您当前设置的最简单的方法。
TA贡献1851条经验 获得超5个赞
- 只是你应该在 MainWindow 类中执行此代码:
public partial class MainWindow : Window
{
public static MainWindow _instance;
public MainWindow()
{
_instance = this;
InitializeComponent();
}
private void SkipVideo()
{
}
}
- 现在你可以调用任何方法、用户控件等:
public partial class TimeWindow : Window
{
...
private void DemoVideo_MediaEnded(object sender, RoutedEventArgs e)
{
MainWindow._instance.SkipVideo();
}
}
TA贡献1797条经验 获得超6个赞
需要向实例TimeWindow
传递对mainWindow
实例的引用,以调用mainWindow.SkipVideo()
. 通常,当您TimeWindow
在mainWindow
. TimeWindow 中的公共属性或构造函数参数可用于提交实例。
但是,您使用的是 WPF,这是一种 Windows 窗体编程方法。WPF/UWP 的设计考虑了 MVVM 模式。这不是 MVVM 模式。虽然您可以使用旧方法,但这样做会错过 WPF 大约 90% 的功能,并且在其他各个方面都会遇到问题。如果你打算在 WPF 中工作,你肯定需要学习 MVVM。MVVM 包括一种像这样跨 Windows 共享数据/功能的方法。
- 3 回答
- 0 关注
- 171 浏览
添加回答
举报