在其他程序集中使用转换器设置样式

本文关键字:转换器 设置 样式 集中 其他 程序 程序集 | 更新日期: 2023-09-27 18:35:46

我有一个类库,其中包含一个保存一些StylesResourceDictionary。字典引用一个Converter,它在同一程序集中定义,如下所示:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:converter="clr-namespace:Lib.Resources.Converters">
    <converter:TextSizeConverter x:Key="LabelTextSizeConverter" />
    <Style TargetType="{x:Type Label}">
        <Setter Property="FontSize"
                Value="{Binding ActualWidth, RelativeSource={RelativeSource Self}, Converter={StaticResource LabelTextSizeConverter}}" />
    </Style>
<ResourceDictionary />

当我尝试在另一个项目中加载字典时,我收到一条XamlParseException,指出Converter是未知类型的。

var rd = new ResourceDictionary()
{
    Source = new Uri("pack://application:,,,/Lib.Resources;component/Styles/Label.xaml")
};
Resources.MergedDictionaries.Add(rd);

我尝试了转换器的各种BuildActions,但没有任何成功。

有没有办法解决这个问题,或者我需要以完全不同的方式解决这个问题?

在其他程序集中使用转换器设置样式

您必须

在转换器中添加assembly xmlns

xmlns:converter="clr-namespace:Lib.Resources.Converters;assembly=YOUR Assembly"