我正在开发一个UWP类库,它将作为NuGet包交付。此库包含一个名为CustomControl的控件。此控件使用名为CustomForegroundTransparentBrush的画笔,该画笔在库的资源字典(CustomResourceDictionary)中定义为另一个画笔(ForegroundTransparentBrush)的别名:
<StaticResource x:Key="CustomForegroundTransparentBrush" ResourceKey="ForegroundTransparentBrush" />
字符串
我想为我的库的用户提供一种方法来重写CustomForegroundTransparentBrush,以更改其应用程序中Custom控件的颜色。但是,我不希望他们更改ForegroundTransparentBrush,因为它在库中的其他地方使用。
我尝试在App.xaml和使用Custom控件的测试页的本地资源中使用键CustomForegroundTransparentBrush定义一个新画笔,但它似乎不影响控件的颜色。这就是我所做的:
<Application.Resources>
<SolidColorBrush x:Key="CustomForegroundTransparentBrush" Color="MyColor"/>
</Application.Resources>
型
在测试页面中:
<Page.Resources>
<SolidColorBrush x:Key="CustomForegroundTransparentBrush" Color="MyColor"/>
</Page.Resources>
型
但这两种方法似乎都不起作用。CustomControl仍使用库的资源字典中定义的原始颜色。
是否有一种方法可以允许用户覆盖CustomForegroundTransparentBrush而不影响ForegroundTransparentBrush?
1条答案
按热度按时间dzhpxtsq1#
看起来XAML资源的查找行为在创建CustomControl时停止。系统在NuGet包中找到目标资源,因此它不需要进一步查找您定义的资源。
我的建议是,您可能仍然需要显式地更改CustomControl的foreground属性