1

私はWPFの初心者です。私の App.xaml は以下のようになります

app.xaml

<Application x:Class="ContactManager.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>
        <Color x:Key="lightBlueColor">#FF145E9D</Color>
        <SolidColorBrush x:Key="lightBlueBrush"
                         Color="{StaticResource lightBlueColor}" />
    </Application.Resources>

プレゼンターファーストのアプローチをしたいので、startupuri は設定しません。app.xaml.cs で次のことを行います

  protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        var appPresenter = new ApplicationPresenter(
            new Shell(), new ContactRepository());
        appPresenter.LaunchView();
    }

"lightBlueBrush" を staticResource として参照する "SearchBar.xaml" というユーザー コントロールがあります。

デザイナーで「Shell.xaml」を開こうとすると、次のように表示されます。「shell.xaml」は、タイプ「SearchBar.xaml」のインスタンスを作成できなかったため、デザイン時にロードできません。

別の Visual Studio インスタンスを使用して devenv.exe をデバッグすると、app.resources で作成したブラシにアクセスできないことがわかります。

プレゼンター優先のアプローチを行っている場合、リソースにどのようにアクセスしますか?

startupURI が「Shell.xaml」で、スタートアップ イベントが存在しないときに、これが機能していました。

手がかり/アイデア/提案。私は理解しようとしているだけです。

@デザインタイムではなく、アプリケーションを実行すると、すべてが期待どおりに機能します。

4

1 に答える 1

0

base.OnStartup(e) は、関数の最後の行にする必要があります。

于 2010-05-23T20:49:26.230 に答える