3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
這InvalidCastException意味著您的應(yīng)用程序的主窗口是TimeWindow.
如果確實(shí)有一個(gè)MainWindowopen,你可以像這樣獲取它的引用:
private void DemoVideo_MediaEnded(object sender, RoutedEventArgs e)
{
MainWindow mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
if (mainWindow != null)
mainWindow.SkipVideo();
}
有更好的方法來(lái)處理這個(gè)問(wèn)題,例如使用 @Christopher 建議的 MVVM 設(shè)計(jì)模式,但這可能是考慮到您當(dāng)前設(shè)置的最簡(jiǎn)單的方法。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
- 只是你應(yīng)該在 MainWindow 類(lèi)中執(zhí)行此代碼:
public partial class MainWindow : Window
{
public static MainWindow _instance;
public MainWindow()
{
_instance = this;
InitializeComponent();
}
private void SkipVideo()
{
}
}
- 現(xiàn)在你可以調(diào)用任何方法、用戶(hù)控件等:
public partial class TimeWindow : Window
{
...
private void DemoVideo_MediaEnded(object sender, RoutedEventArgs e)
{
MainWindow._instance.SkipVideo();
}
}

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
需要向?qū)嵗?code>TimeWindow傳遞對(duì)mainWindow
實(shí)例的引用,以調(diào)用mainWindow.SkipVideo()
.?通常,當(dāng)您TimeWindow
在mainWindow
.?TimeWindow 中的公共屬性或構(gòu)造函數(shù)參數(shù)可用于提交實(shí)例。
但是,您使用的是 WPF,這是一種 Windows 窗體編程方法。WPF/UWP 的設(shè)計(jì)考慮了 MVVM 模式。這不是 MVVM 模式。雖然您可以使用舊方法,但這樣做會(huì)錯(cuò)過(guò) WPF 大約 90% 的功能,并且在其他各個(gè)方面都會(huì)遇到問(wèn)題。如果你打算在 WPF 中工作,你肯定需要學(xué)習(xí) MVVM。MVVM 包括一種像這樣跨 Windows 共享數(shù)據(jù)/功能的方法。
- 3 回答
- 0 關(guān)注
- 251 瀏覽
添加回答
舉報(bào)