如何使用xaml Xamarin.form中的转换器

如何使用xaml Xamarin.form中的转换器,xaml,colors,xamarin.forms,converter,Xaml,Colors,Xamarin.forms,Converter,我有几个条目必须用红色或绿色(这取决于值是正值还是负值)。我在项目中创建了一个转换器,在已经创建其他转换器的同一文件夹中(该项目不仅仅是我的)。 现在我试着这么做: <my:SingolaRigaCollapsed Even="False" Height="40" HeaderText="Variazione patrimoniale &#x0a; al lordo dei proventi" ValueText="{Binding RendimentoAlLordoProven

我有几个条目必须用红色或绿色(这取决于值是正值还是负值)。我在项目中创建了一个转换器,在已经创建其他转换器的同一文件夹中(该项目不仅仅是我的)。 现在我试着这么做:

<my:SingolaRigaCollapsed Even="False" Height="40"  HeaderText="Variazione patrimoniale &#x0a; al lordo dei proventi" ValueText="{Binding RendimentoAlLordoProventi}" ValueColor="{Binding RendimentoAlLordoProventi, Converter={StaticResource ValueToColorConverter}}"/>  
就像这样,程序在加载xaml时崩溃,我不知道是因为ValueColor属性中的绑定不正确,还是因为其他原因


注意:手动插入转换器名称;我不知道为什么,但这是VS唯一找不到的转换器

我不确定您的代码中出了什么问题,但我想这可能是两件事之一:

  • 您没有在页面或应用程序中全局声明转换器
  • 为此,请将此部分添加到页面:

    <ContentPage.Resources>
        <ResourceDictionary>
            <converters:ValueToColorConverter x:Key="ValueToColorConverter" />
        </ResourceDictionary>
    </ContentPage.Resources>
    
    
    
    不要忘记将转换器名称空间添加到应用程序的根目录中,例如:
    xmlns:converters=“clr namespace:YourApp.namespace.converters”

    现在你应该能够像现在一样使用它

  • 你的内心有点不对劲
  • 我看到您正在这样做:
    返回值。ToString()包含(“-”)?颜色。红色:颜色。绿色

    如果
    ,会发生什么情况?现在,你的应用程序将爆炸。因为它接收一个对象,所以您必须考虑所有可能的场景。将其强制转换为正确的类型,确保它不为null,等等


    如果你想让它更打字,请看一看。此Visual Studio for Mac扩展为转换器提供了类型安全性。

    我无法在WP页面中添加该代码。现在,我尝试添加这一行:xmlns:conv=“using:PROJ.WP.converts”,但它还不能工作。现在我要再次尝试执行,这样我就可以告诉你错误是什么什么什么是WP页面?为什么你不能添加它?这个应用程序混合了Xamarin.Forms代码和Xamarin.WP代码(共享的和本地的,我真的不知道为什么)。我现在工作的页面不允许ContentPage标记。我无法添加ContentPage.Resource标记mmmh没事,我无法告诉您崩溃错误,因为我看不到任何错误。请将实际使用的页面放置在
    ContentPage
    中,而不是
    <ContentPage.Resources>
        <ResourceDictionary>
            <converters:ValueToColorConverter x:Key="ValueToColorConverter" />
        </ResourceDictionary>
    </ContentPage.Resources>