2

解決策を数時間検索した後、助けが必要です。

メイン ウィンドウと、RibbonWindow クラスを使用する 2 番目のウィンドウを備えた WPF アプリケーションがあります。問題は、2 番目のウィンドウから MainWindow のコントロール (データグリッド) にアクセスできないことです。2 番目のウィンドウは (クラス内で) CanSubMessages と呼ばれます。MainWindow は RibbonWindow から継承し、CanSubMessages は Window から継承します。

私が達成しようとしているのは、CanSubMessages ウィンドウから MainWindow のデータグリッドを更新することです。シンプルですね。

CanSubMessages から次のことを行います。

Window rootWindow = Application.Current.MainWindow as Window;
rootWindow.CanDataGridMessagesCh1.Items.Refresh();

CanDataGridMessagesCh1 は MainWindow のデータグリッドです。その名前は、対応する XAML で次のように指定されます。

<DataGrid x:Name="CanDataGridMessagesCh1" AutoGenerateColumns="False" ...

このコントロールにアクセスできない理由がわかりません。これは私が得るエラーです:

'System.Windows.Window' には 'CanDataGridMessagesCh1' の定義が含まれておらず、タイプ 'System.Windows.Window' の最初の引数を受け入れる拡張メソッド 'CanDataGridMessagesCh1' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか? ?)

手がかりはありますか?

4

1 に答える 1

1

この行は間違っています:

Window rootWindow = Application.Current.MainWindow as Window; 

する必要があります

Window rootWindow = Application.Current.MainWindow as MyWindowClass; 

編集

別の解決策は、子ウィンドウにメイン ウィンドウへの参照を含めることです。

メイン ウィンドウから子ウィンドウを作成し、メイン ウィンドウの種類を子ウィンドウ コンストラクターに追加したと仮定した例を次に示します。

ChildWindow cw = new ChildWindow(this);

その後、子ウィンドウで次のようにします。

var mainwindow = this.MainWindow; // from the constructor
于 2012-04-27T11:47:06.877 に答える