3

これは実行可能に思えますが、何らかの理由で適切な方法が思い浮かびません。私は C# と .NET を初めて使用するので、これがばかげた質問でないことを願っています :)

4

2 に答える 2

7

なぜこれをしたいかわからない。最高のデザインとは思えませんが、あなたがしていることの詳細を知らなければ、それについてコメントすることはできません。これを行う方法は次のとおりです。

App.Xaml.csの場合:

var main = App.Current.MainWindow as MainWindow; // If not a static method, this.MainWindow would work
main.MyFunction();

起動後にこれを行う必要があることに注意してください。MainWindow起動前に実行する場合は、オブジェクトを作成して次の場所に割り当てる必要がありますthis.MainWindow

var window = new MainWindow();
this.MainWindow = window;

window.Show();

window.MyFunction();
于 2011-04-07T13:44:20.183 に答える
2

誰かが始めているのを見るのは素晴らしいことです!それを続ければ、言語が強力であることがわかり、最終的には、コーディングで使用することを意図した設計方法論が表示されます。

あなたがそのようなことをしたいと思ういくつかの状況しか理解できません。

1) ウィンドウに依存しない関数を呼び出す:

コードが MainWindow に依存していない、または MainWindow を参照していない場合は、それを MainWindow のコード ファイルから移動して、別の場所に配置する必要がありますか? .cs ファイルはいくつでも作成できるので、時間をかけて整理してください。後で喜んでくれます。

2) ウィンドウがロードされた後、ウィンドウでいくつかの初期化タスクを実行します。

ウィンドウのコードで、コンストラクターの InitializeComponent() 呼び出しの後にコードを挿入します。(これは戻り値の型を持たないメソッドで、単に "public MainWindow() {" です)

何かを渡す必要がある場合は、コンストラクターにパラメーターを追加できることを忘れないでください。Visual Studio が作成する既定のパラメーターなしのコンストラクターには、魔法のようなものはありません。この方法で、多くの複雑なコードを作成することを回避できる場合があります。一般に、ウィンドウをロードするよりも、ウィンドウのコードで初期化を行う方が適切です。

3) ウィンドウの内外で簡単なデータを取得する

カスタム プロパティの作成方法はもう学習しましたか? とても簡単です。

于 2011-04-07T15:17:22.493 に答える