私は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」で、スタートアップ イベントが存在しないときに、これが機能していました。
手がかり/アイデア/提案。私は理解しようとしているだけです。
@デザインタイムではなく、アプリケーションを実行すると、すべてが期待どおりに機能します。