我想知道是否可以使用多个资源来定位WPF中的相同元素或控件?我注意到,如果定位相同的元素,XAML文件级联和资源列表中的下一个XAML文件将超过下一个。
有可能解决这个问题吗? 我要做的是将一个XAML文件作为我的布局和定位,一个严格用于颜色。
在我的App.xaml我的资源区域中,如下所示:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Views/LayoutAndPositioning/LayoutAndPositioning.xaml"/>
<ResourceDictionary Source="/Views/Theme/DefaultColors.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
要素的LayoutAndPositioning.xaml
<Style x:Key="MyElement" TargetType="{Rectangle}">
<Setter Property="Margin" Value="200,200,200,200" />
</Style>
元素
的DefaultColors.xaml <Style x:Key="MyElement" TargetType="{Rectangle}">
<Setter Property="Fill" Value="Green" />
<Setter Property="Width" Value="400" />
<Setter Property="Height" Value="200" />
</Style>
但是当我尝试在2个不同的文件中定位相同的元素时。 LayoutAndPositioning.xaml是列表中的第一个,因为DefaultColors.xaml中没有位置样式,因此不适用于该元素。 DefaultColors.xaml没有保证金,因此我的元素最终没有保证金属性。
我测试了从App.xaml资源列表中取出DefaultColors.xaml并返回定位。所以这似乎是一个层叠的事情。
如果可以在2个不同的Xaml文件中定位相同的元素,是否有任何想法。
答案 0 :(得分:0)
尝试执行以下操作:
通过在操作DefaultColors.xaml中执行以下操作,将LayoutAndPositioning.xaml合并到DefaultColors.xaml中
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Views/LayoutAndPositioning/LayoutAndPositioning.xaml"/>
</ResourceDictionary.MergedDictionaries>
从Application.Resources中删除LayoutAndPositioning.xaml
然后改变:
<Style x:Key="MyElement" TargetType="{Rectangle}">
<Setter Property="Fill" Value="Green" />
<Setter Property="Width" Value="400" />
<Setter Property="Height" Value="200" />
</Style>
要
<Style x:Key="RectStyle" TargetType="{Rectangle}" basedOn="{StaticResource MyElement}">
<Setter Property="Fill" Value="Green" />
<Setter Property="Width" Value="400" />
<Setter Property="Height" Value="200" />
</Style>