2

私は2つのプロジェクトを持っています。1 つはライブラリで、もう 1 つは WPF アプリケーションです。私のライブラリ プロジェクトでは、リソース ファイル (Resources.resx) を作成し、それに文字列を追加して、そのアクセスをパブリックとして作成しました。

私のWPFプロジェクトでは、ライブラリプロジェクトの参照を追加しました。現在、XAML コントロールでライブラリ リソース ファイルを使用しようとしています。

これが私のコードです。ここで、MyApplication は wpf プロジェクトで、MyLibrary は dll プロジェクトです。

<UserControl x:Class="MyApplication.LauncherView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:p="clr-namespace:MyLibrary"
    <StackPanel>
        <Button Content="{x:Static p:Resources.TextFromResource}" Command="{Binding LaunchCommand}" />
    </StackPanel>
</UserControl>

しかし、最後にこれらのエラーを受け取ります。

エラー 1 名前空間 "clr-namespace:MyLibrary" に名前 "Resources" が存在しません。エラー 2 タイプ 'Resources' が見つかりません。タイプ名は大文字と小文字が区別されることに注意してください。

4

2 に答える 2

2

アセンブリではなくクラスを使用するには、アセンブリを定義する必要があります

xmlns:p="clr-namespace:MyNamespace;assembly=MyLibrary"

ただし、リソースを含めるには、名前空間を含める必要はありません。これはクラスではなく、名前空間がないためです...リソースファイルを含める必要があります..これが正しい方法です

<ResourceDictionary Source="pack://application:,,,/MyLibrary;component/Subfolder/MyResourceFile.xaml"/>

その後、使用できます

Content="{x:StaticResource TextFromResourceKey}"
于 2013-10-09T07:55:55.570 に答える
-1

マージ辞書を使用しています。

< ResourceDictionary.MergedResources> < ResourceDictionary Source="pack://application:,,,/MyLibrary;component/component/Subfolder/MyResourceFile.xaml"/ > < /ResourceDictionary.MergedResources>

その後、使用できます。

于 2013-10-09T07:59:55.947 に答える