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