XAML转换器在另一个项目中

时间:2010-10-27 15:23:24

标签: xaml f# module xml-namespaces

抱歉F#...

我有一个带有以下类的VS项目:

namespace ABCCommonSilverlight

module ConvertersAndFormatters =
    type FixedDecimalConverter () =
        interface  IValueConverter with
            member this.Convert(value, targetType, parameter, culture) = 
                if value = null then
                    "N/A" :> obj
                else
                    (decimalFormatter (value :?> Double)) :> obj
            member this.ConvertBack(value, targetType, parameter, culture) = raise <| NotImplementedException()

我在另一个项目中引用了这个项目,该项目有一个看起来像这样的XAML资源文件......

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:y="clr-namespace:ABCCommonSilverlight;assembly=ABCCommonSilverlight">

  <y:ConvertersAndFormatters.FixedDecimalConverter x:Key="abcFixedDecimalConverter" />
</ResourceDictionary>

ConvertersAndFormatters.前面没有FixedDecimalConverter我得到:

  

异常“未找到类型'FixedDecimalConverter'。”

使用“ConvertersAndFormatters”。我明白了:

  

异常“无法在属性元素上设置属性。”

知道正确的方法是什么?

1 个答案:

答案 0 :(得分:1)

我要尝试的第一件事是将FixedDecimalConverter类型移出模块,以便它直接位于命名空间中。 (现在CLI和XAML将其视为模块类中的嵌套类。)