1

私は多くのUserControlsを使用してWPFプロジェクトに取り組んでおり、WPFリソースにある程度の健全性を持たせようとしています。

ベースファイルには、色など、すべてのビューに必要な一般的なものが含まれています。

<!-- Resources.xaml -->
<Color x:Key="FlashOrange">#F59500</Color>

次に、ビューに固有のリソースファイルがFlashOrangeを参照する必要があります。

<!-- ContactViewResources.xaml -->
<DataTrigger Binding="{Binding IsActiveConversation}" Value="True">
    <Setter Property="Background" Value="{StaticResource FlashOrange}"/>
</DataTrigger>

最後に、両方をUserControlに「含め」たいと思います。残念ながら、このアプローチでは、{StaticResourceFalshOrange}が定義されていないという例外が発生します。

<!-- ContactView.xaml -->
<UserControl.Resources>        
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="..\Resources.xaml"/>
            <ResourceDictionary Source="ContactViewResources.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>     
</UserControl.Resources>

すべてのビューファイルは同じDLLアセンブリにあり、個別のEXEアセンブリが実行されます

ありがとう!

4

2 に答える 2

2

Resources.xaml を ContactViewResources.xaml にマージして、静的参照が読み込み時にリソース ツリー内の FlashOrange への直接パスを持つようにするか、代わりに DynamicResource を使用します。

于 2010-10-28T12:41:27.863 に答える
1

ある ResourceDictionary を別の ResourceDictionary で参照するには、参照を保持する ResourceDictionary の MergedDictionary プロパティを使用します。あなたの場合:

<!-- ContactViewResources.xaml -->
<ResourceDictionary ...>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="..\Resources.xaml"/>
    </ResourceDictionary.MergedDictionaries>  
    ...  
</ResourceDictionary>
于 2012-05-30T02:05:35.250 に答える