2

WPFアプリケーション(「Ferhad.Wpf」という名前)を作成しました。次に、「Ferhad.Wpf.Core」と「Ferhad.Wpf.SystemStyles」という名前の2つのクラスライブラリをソリューションに追加しました。

「Ferhad.Wpf.Core」には「Resources.xaml」のみがあります。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <SolidColorBrush x:Key="Foreground" Color="#FFFFFF" />
    <SolidColorBrush x:Key="BackgroundNormal" Color="#3F3F46" />
    <SolidColorBrush x:Key="BorderBrushNormal" Color="#54545C" />
    <SolidColorBrush x:Key="BorderBrushHighlighted" Color="#6A6A75" />
</ResourceDictionary>

ただし、「Ferhad.Wpf.SystemStyles」には「ButtonStyles.xaml」と「Styles.xaml」もあります。これが「ButtonStyles.xaml」です。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="pack://application:,,,/Ferhad.Wpf.Core;component/Resources.xaml" />
    </ResourceDictionary.MergedDictionaries>
    <Style x:Key="StandartButton" TargetType="Button">
        <Setter Property="Visibility" Value="Visible" />
        <Setter Property="Foreground" Value="{StaticResource Foreground}" />
        <Setter Property="Background" Value="{StaticResource BackgroundNormal}" />
        <Setter Property="BorderBrush" Value="{StaticResource BorderBrushNormal}" />
    </Style>
</ResourceDictionary>

および「Styles.xaml」:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="ButtonStyles.xaml" />
    </ResourceDictionary.MergedDictionaries>

    <Style TargetType="Button" BasedOn="{StaticResource StandartButton}" />
</ResourceDictionary>

そしてここにapp.xamlがあります:

<Application x:Class="Ferhad.Wpf.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/Ferhad.Wpf.SystemStyles;component/Styles.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

MainWindow.xamlの設計時にはすべて問題ないように見えますが、アプリケーションを実行すると例外がスローされます。Set property 'System.Windows.ResourceDictionary.Source' threw an exception.

私はそれについてグーグルで検索しましたが、何も役に立ちませんでした。ファイルのBuildActionを変更しようとしましたが、それも役に立ちませんでした。

アップデート:

例外は、行番号「8」と行位置「18」です。

そして、内部の例外は次のとおりです。{"Could not load file or assembly 'Ferhad.Wpf.SystemStyles, Culture=neutral' or one of its dependencies. The system cannot find the file specified.":"Ferhad.Wpf.SystemStyles, Culture=neutral"}

4

2 に答える 2

4

AppからへCoreの参照を追加するのを忘れた可能SystemStyles性がありますCore。ビルドプロセスがコピーするだけの場合は、アセンブリSystemStylesがありません。Core

App
-> SystemStyles
-> Core

SystemStyles
-> Core //Not strictly necessary because the build process does not copy the 
        //reference to the App project anyway and the resources
        //are not resolved at compile-time

Core
-
于 2012-08-26T15:16:43.610 に答える
1

これを変更してみてください

    <ResourceDictionary Source="ButtonStyles.xaml" />

  <ResourceDictionary Source="pack://application:,,,/Ferhad.Wpf.SystemStyles;component/ButtonStyles.xaml" />
于 2012-08-26T15:26:20.890 に答える