2

我知道有两个关于这个主题的不错的在线资源,XAML 指南这个不太完整的一个

而且我还是不太明白!

例如,假设我有两个项目:

  1. Wpf.ControlLibrary.proj
  2. Wpf.App.proj

在 Wpf 应用程序中,我有三个资源一起工作,形成一种统一的方式,为不同的视图提供错误反馈和关闭。其中两个资源通过 DataTemplate 提供:

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="EditedStateIndicator.xaml" />
    <ResourceDictionary Source="CloseCrossToggleButton.xaml" />
</ResourceDictionary.MergedDictionaries>

<DataTemplate x:Key="SatelliteViewClosePanelStyle" >
    <StackPanel Orientation="Horizontal">
        <Button Style="{StaticResource CloseCrossButtonStyle}"  />
        <Ellipse Style="{StaticResource EditedStateIndicatorStyle}"  />
    </StackPanel>
</DataTemplate>

这又在“SatelliteView.ResourceLibrary.xaml”中提供:

<!-- ##Satellite View Library-->
<ResourceDictionary.MergedDictionaries>

    <ResourceDictionary Source="SatelliteViewClosePanel.xaml" />
    <ResourceDictionary Source="InlineBorder.xaml" />

</ResourceDictionary.MergedDictionaries>

这又在“ControlLibrary.ResourceLibrary.xaml”中提供

<!-- ##Master Control Library reference-->
<ResourceDictionary.MergedDictionaries>

    ...
    <ResourceDictionary Source="CustomControlStyles/SatelliteViewStyles/ResourceLibrary.xaml" />

    ...

</ResourceDictionary.MergedDictionaries>

然后在 Wpf.App 项目中消费,字面意思是 App.xaml

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Wpf.ControlLibrary;component/ResourceLibrary.xaml" />
        </ResourceDictionary.MergedDictionaries>

    </ResourceDictionary>

</Application.Resources>

应用程序内部是一个视图,它使用了一些也需要访问控件库的内容:

<ResourceDictionary.MergedDictionaries>
   Source="pack://application:,,,/SWpf.ControlLibrary;component/ResourceLibrary.xaml" />
</ResourceDictionary.MergedDictionaries>

<DataTemplate x:Key="AvatarEditingControlTemplate">

    ...

</DataTemplate>

好的,那么你的问题是什么?

  1. 鉴于 DataTemplate 需要“ControlLibrary.ResourceLibrary”或引发错误,那么在 App.Resources 中提供它有什么好处?我认为应用程序资源应该使应用程序可以使用所有资源?
  2. 我怎样才能更好地组织这里显示的资源,或者这是一个体面的方法?关于我错过的主题的任何其他好的链接?大多数不平凡的项目是否需要一些代码来获得某种共享资源库?

干杯,
贝里尔

4

0 回答 0