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 關注
- 239 瀏覽
添加回答
舉報