亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從另一個窗口調用MainWindow方法?

如何從另一個窗口調用MainWindow方法?

C#
HUX布斯 2023-08-13 09:40:19
我需要從另一個窗口中的 MainWindow 調用方法。問題是我不知道為什么會出現錯誤,我想修復它。我嘗試使用各種方式調用該函數,但沒有一個起作用。這是我最后一次嘗試:我想打電話:namespace Class1{    public partial class MainWindow : Window    {        ...        public void SkipVideo()        {            ...        }    }}這是我嘗試撥打電話的方式:namespace Class1{    public partial class TimeWindow : Window    {        ...        private void DemoVideo_MediaEnded(object sender, RoutedEventArgs e)        {            ((MainWindow)Application.Current.MainWindow).SkipVideo();        }    }}沒有構建錯誤,但是當我運行該程序時,它會執行以下操作: System.InvalidCastException: 'Unable to cast object of type 'Class1.TimeWindow' to type 'Class1.MainWindow'.'
查看完整描述

3 回答

?
12345678_0001

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 設計模式,但這可能是考慮到您當前設置的最簡單的方法。


查看完整回答
反對 回復 2023-08-13
?
江戶川亂折騰

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();

    }

}


查看完整回答
反對 回復 2023-08-13
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

需要向實例TimeWindow傳遞對mainWindow實例的引用,以調用mainWindow.SkipVideo().?通常,當您TimeWindowmainWindow.?TimeWindow 中的公共屬性或構造函數參數可用于提交實例。

但是,您使用的是 WPF,這是一種 Windows 窗體編程方法。WPF/UWP 的設計考慮了 MVVM 模式。這不是 MVVM 模式。雖然您可以使用舊方法,但這樣做會錯過 WPF 大約 90% 的功能,并且在其他各個方面都會遇到問題。如果你打算在 WPF 中工作,你肯定需要學習 MVVM。MVVM 包括一種像這樣跨 Windows 共享數據/功能的方法。


查看完整回答
反對 回復 2023-08-13
  • 3 回答
  • 0 關注
  • 239 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號