XAML 如何覆盖UWP NuGet包中的特定画笔?

b09cbbtk  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(128)

我正在开发一个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?

dzhpxtsq

dzhpxtsq1#

看起来XAML资源的查找行为在创建CustomControl时停止。系统在NuGet包中找到目标资源,因此它不需要进一步查找您定义的资源。
我的建议是,您可能仍然需要显式地更改CustomControl的foreground属性

相关问题