WPF:使用多个资源以同一元素或控件为目标

WPF:使用多个资源以同一元素或控件为目标,wpf,xaml,Wpf,Xaml,我想知道在WPF中是否可以使用多个资源以相同的元素或控件为目标?我注意到,如果目标元素相同,XAML文件级联和资源列表中的下一个XAML文件将取代下一个 有可能绕过这个吗? 我试图做的是让一个XAML文件成为我的布局和定位,一个严格用于颜色 在my App.xaml我的资源区中,如下所示: <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDic

我想知道在WPF中是否可以使用多个资源以相同的元素或控件为目标?我注意到,如果目标元素相同,XAML文件级联和资源列表中的下一个XAML文件将取代下一个

有可能绕过这个吗? 我试图做的是让一个XAML文件成为我的布局和定位,一个严格用于颜色

在my App.xaml我的资源区中,如下所示:

  <Application.Resources>
     <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Views/LayoutAndPositioning/LayoutAndPositioning.xaml"/>
            <ResourceDictionary Source="/Views/Theme/DefaultColors.xaml"/>

        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

元素的layoutdpositioning.xaml

 <Style x:Key="MyElement" TargetType="{Rectangle}">
     <Setter Property="Margin" Value="200,200,200,200" />
 </Style>
  <Style x:Key="MyElement" TargetType="{Rectangle}">
    <Setter Property="Fill" Value="Green" />
     <Setter Property="Width" Value="400" />
    <Setter Property="Height" Value="200" /> 
 </Style>

元素的DefaultColors.xaml

 <Style x:Key="MyElement" TargetType="{Rectangle}">
     <Setter Property="Margin" Value="200,200,200,200" />
 </Style>
  <Style x:Key="MyElement" TargetType="{Rectangle}">
    <Setter Property="Fill" Value="Green" />
     <Setter Property="Width" Value="400" />
    <Setter Property="Height" Value="200" /> 
 </Style>

但是当我试图在两个不同的文件中定位相同的元素时。列表中的第一个LayoutAndPositioning.xaml不适用于元素,因为DefaultColors.xaml中没有位置样式。DefaultColors.xaml没有边距,因此我的元素最终没有边距属性

我已经测试过从App.xaml资源列表中取出DefaultColors.xaml,然后定位返回。因此,这似乎是一个级联的事情


有没有人知道是否可以在两个不同的Xaml文件中针对同一个元素

尝试执行以下操作:

  • 通过在操作DefaultColors.xaml时执行以下操作,将layoutdpositioning.xaml合并到DefaultColors.xaml中

    <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/Views/LayoutAndPositioning/LayoutAndPositioning.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    
    
    
  • 从应用程序中删除layoutdpositioning.xaml。参考资料

然后改变:

<Style x:Key="MyElement" TargetType="{Rectangle}">
    <Setter Property="Fill" Value="Green" />
     <Setter Property="Width" Value="400" />
    <Setter Property="Height" Value="200" /> 
 </Style>



您是否尝试过将MyElement重命名为DefaultColors中的MyNewElement以避免名称冲突,然后将MyNewElement设置为
basedOn=“{StaticResource MyElement}”
并将LayoutAndPositioning.xaml合并到DefaultColors.xaml字典中。我也找到了这个解决方案。我发现你可以有两个单独的和'basedOn'仍然跨文件工作。我不知道在不使用baseOn的情况下是否有任何不同的方法,但这与WPF中的情况不同。哦,好吧。谢谢