1

WPFユーザーコントロールアセンブリでResourceDictionaryを作成しました。このUserControl全体でこれを使用し、この分離されたファイルにすべてのスタイルを含めることができるようにしたいと思います。

ResourceDictionary:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">    
    <Style x:Key="c1BtnX1">
        <Setter Property="Background" Value="Bisque"></Setter>
    </Style>    
</ResourceDictionary>

そのアドレスはユーザーコントロールアセンブリリソース/mainResX.xamlであり、ビューは同じアセンブリ/Views/view.xamlにあります

私が思う使用法は次のとおりです。

<Border Style="{StaticResource ResourceKey=c1BtnX1}" 
        BorderBrush="Black"  
        Width="20" 
        Height="20">
               <TextBlock Text="X" />
</Border>

また、UserControl内で以下のコードを試して、コントロールごとのリソースを定義しましたが、この方法でもリソースが見つからなかったようです。

 <UserControl ... >
    <UserControl.Resources>
        <ResourceDictionary Source="../Resources/mainResX.xaml" />            
    </UserControl.Resources>

これをどこにどのように配置/定義する必要がありますか?

4

2 に答える 2

4

提供された情報から、ファイル構造が何であるかわかりません。

resource.xaml と control.xaml が同じアセンブリの同じフォルダーにある場合は、最初に "/Resources" を指定せずに mainResX.xaml を参照します。それ以外の場合は、何らかの方法でファイル構造を説明する必要があります。

それらは同じアセンブリにありますか? 必要に応じて場所の先頭に「../」文字列をいくつでも追加して、ツリーを「ウォークアップ」し、フォルダー (つまり、「../Resources/mainResX.xaml」) を使用できます。

それらが異なるアセンブリにある場合は、pack uri を指定する必要があります。これは実際にはいつでも実行できますが、必要でない場合は少し面倒です。ここに例があります

<ResourceDictionary Source="pack://application:,,,/MyAssembly.Wpf;component/Resources/mainResX.xaml" />

HTH、
ベリル

于 2012-11-03T15:42:47.527 に答える
2

個人的には、App.xaml を使用して、アプリでグローバルに使用するスタイルを含む XAML ファイルの "MergedDirectory" を指定するのが好きです。私は通常、グローバル スタイルを設定するための "DefaultStyles.xaml" を持っています (スタイルを指定せずにアプリ内のすべてのテキスト ボックスを同じに見せたい場合など)。次に、特定のスタイルを設定する「Styles.xaml」があります。または、実際にそれらがたくさんある場合は、コントロール タイプごとに 1 つの xaml を使用することもできます...

これらを app.xaml の下に配置すると、アプリに対してグローバルになり、パスと辞書を頻繁に再指定する必要がなくなります。もちろん、これはすべてのコーディング状況に当てはまるわけではありませんが、私にとっては時間の節約になります。

于 2012-11-03T15:48:33.487 に答える