3

私のapp.xamlでstartupURIを設定しようとするのをやめるようblendに伝えることが知られているトリックはありますか? グーグルで調べましたが、何も表示されなかったので、ここで質問することにしました。

スタートアップ ルーチンを使用して、メインウィンドウを自分でインスタンス化します。ときどき、blend は、コンパイル時に startupURI="MainWindow.xaml" をトスするのが好きです。ときどき、「このプロジェクトに関連付けられた起動シーンはありません。ブレンドして何とか修正しますか?」というメッセージが表示されることがあります。またはそれらの線に沿った何か。キャンセル/いいえをクリックしても、コードにグレムリンが表示されます。ブレンドの内部には、このプロパティをチェックするためのメカニズムがいくつかあります。または、ダイアログ ボックスを介して文句を言うことはありません。では、どうすれば「いいえ、ブレンドはありません。それがなくても大丈夫ですか?」と言うことができます (笑)。

それはかなり迷惑です。VS2010が開いていないため、カラーピッカーを使用するなどの簡単なことを行うためにブレンドを開き、それを使用してコンパイルします。私の結果は2つのメインウィンドウです。ただし、毎回実行されるわけではないため、繰り返し可能な動作ではありません。コンパイラはランダムに動作します。

編集:ブレンド4を使用していますが、ブレンド3も使用していたときにこれが発生するのを見ました。

4

1 に答える 1

0

これは恐ろしいハックですが、うまくいきます。デフォルトでは、StartupUri は null ですが、プロパティを使用して null に設定することはできないため、端に住みたい場合はプロパティを回避できます。

// Dangit blend! Stop inserting a stupid StartupUri    
private void FixStartupUri()
{
    var type = typeof(Application);
    var startupUri = type.GetField("_startupUri", BindingFlags.Public
        | BindingFlags.NonPublic
        | BindingFlags.Instance);
    startupUri.SetValue(this, null);
}

これを Application クラスに追加して、次のように呼び出します。

protected override void OnStartup(StartupEventArgs e)
{
    FixStartupUri();
    base.OnStartup(e);
    // Do the rest of your startup stuff.
}
于 2010-12-31T21:06:21.737 に答える