在其他装配中使用转换器的样式

时间:2013-10-16 11:11:55

标签: c# wpf

我有一个包含ResourceDictionary的类库,其中包含一些Styles。 字典引用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但没有成功。

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

1 个答案:

答案 0 :(得分:1)

您必须在转换器assembly

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