我有几个条目,我必须用红色或绿色着色(这取决于值是正还是负)。我在项目中创建了一个转换器,在已经创建了其他转换器的同一文件夹中(该项目不仅仅是我的)。 现在我试过了:
<my:SingolaRigaCollapsed Even="False" Height="40" HeaderText="Variazione patrimoniale 
 al lordo dei proventi" ValueText="{Binding RendimentoAlLordoProventi}" ValueColor="{Binding RendimentoAlLordoProventi, Converter={StaticResource ValueToColorConverter}}"/>
RendimentiAlLordoProventi 是一个字符串,我想根据字符串的值来设置valuecolor。
转换器是这样的:
class ValueToColorConverters : Windows.UI.Xaml.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return value.ToString().Contains("-") ? Color.Red : Color.Green;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
这样做,程序在xaml加载时崩溃,我不知道是否因为 ValueColor 属性中的绑定不正确,或其他东西。
P.S。转换器的名称是手动插入的;我不知道为什么,但这是VS唯一没有找到的转换器
答案 0 :(得分:1)
我不确定你的代码出了什么问题,但我想这可能是两件事之一:
为此,请将此部分添加到您的页面中:
<ContentPage.Resources>
<ResourceDictionary>
<converters:ValueToColorConverter x:Key="ValueToColorConverter" />
</ResourceDictionary>
</ContentPage.Resources>
并且不要忘记将转换器命名空间添加到应用的根目录,例如:xmlns:converters="clr-namespace:YourApp.Namespace.Converters"
现在你应该可以像现在这样使用它。
我看到你这样做:return value.ToString().Contains("-") ? Color.Red : Color.Green;
如果value
为null
会怎样?现在,你的应用程序将爆炸。因为它接收了一个对象,所以你必须处理所有可能的场景。将其强制转换为正确的类型,确保它不为空等等。
如果您想要更多类型,请查看MFractor。此Visual Studio for Mac扩展为您的转换器提供了类型安全性。