7

C# 経由で UserControl コード ビハインドのリソース ディクショナリにアクセスしようとしていますが、ほとんど成功していません。

マージされた辞書:

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Resources/BiometricDictionary.xaml" />                
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>

埋め込み辞書:

<UserControl.Resources>
    <BitmapImage x:Key="imageDefault">/Resources/Images/default_thumb.png</BitmapImage>
    <BitmapImage x:Key="imageDisconnected">/Resources/Images/disconnect_thumb.png</BitmapImage>
    <BitmapImage x:Key="imageFailed">/Resources/Images/failed_thumb.png</BitmapImage>
    <BitmapImage x:Key="imageSuccess">/Resources/Images/success_thumb.png</BitmapImage>
</UserControl.Resources>

コードビハインド:

        var resourceDictionary = new ResourceDictionary();
        resourceDictionary.Source = new Uri("/Resources/BiometricDictionary.xaml", UriKind.Relative);

私はすべての例と役立つヒントを試しましたが、不足しています。今のところ、成功は辞書をロードする機能です。助言がありますか?

4

4 に答える 4

7

コード ビハインドで UserControl の XAML リソースの 1 つにアクセスするには、UserControl の Resources プロパティにアクセスするだけです。このようなもの:

BitmapImage myImage = (BitmapImage)this.Resources["imageDefault"];

ただし、FindResource() を使用することをお勧めします。これは、呼び出されたオブジェクトだけでなく、キーに一致するものを論理ツリー全体で検索します。

BitmapImage myImage = (BitmapImage)this.FindResource("imageDefault");
于 2009-06-02T17:45:21.350 に答える
1

現在地の前にあるスラッシュを削除してみてください。/Resources を使用する必要があるのは、最初にライブラリにアクセスする必要がある場合のみです。../リソースのように

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
           <ResourceDictionary Source="Resources/BiometricDictionary.xaml" />                
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>

これがお役に立てば幸いです。

于 2015-04-15T10:17:10.387 に答える
0

d'ああ...参照が相対的であるようにローカルbinにコンパイルした後、ここにあるパックURIソリューションを実装しました:ResourceDictionaryを別のアセンブリに実装し、次にFindResource(x:key value here)を実装しました。

@ PeterAllenWeb、@ Pwninstein、迅速な対応と私にもう一度考えさせてくれてありがとう。

于 2009-06-02T18:24:38.477 に答える
0

UserControl のアセンブリで定義された ResourceDictionary があり、その UserControl のコード ビハインドからそれにアクセスしたいと思いますか?

できるはずです。ただし、リストしたコードがコンストラクターにある場合は、リソース ディクショナリにアクセスできない可能性があります (まだ読み込まれていない可能性があります)。同じコードを UserControl の "loaded" イベントに追加してみて、それが機能するかどうかを確認してください。スタイルやテンプレートなどのリソースに単にアクセスしようとしている場合は、クラスから直接 " FindResource " または " TryFindResource " 関数を使用することもできます (つまり、" タイプのオブジェクトを持つ必要はありません)。 ResourceDictionary")。

それが役立つことを願っています!

于 2009-06-02T17:43:54.193 に答える