Xamarin Forms ConverterParameter XAML 错误无效 属性 路径语法
Xamarin Forms ConverterParameter XAML error Invalid Property Path Syntax
我的 XAML 中有如下文本绑定:
Text="{Binding Converter={StaticResource ColumnToCaption}, ConverterParameter=-1}"
它只是获取列号并根据我存储在 collection 中的数据查找该列的标题。这一直工作正常,但在最后一组升级到 Visual Studio / Xamarin 表单后,XAML intelisense 开始生成错误“无效的 属性 值”。我没有多想,因为该应用程序似乎可以正常工作。然后一些奇怪的事情开始在我的应用程序中发生,我注意到在我的错误列表中,我列出了 43 个“无效 属性 值”错误(基本上我使用 ConverterParameter 的每个地方都有一个)。
我仔细检查了 MS 文档以确保没有任何更改(此 link https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/converters)并且它仍然显示以数字形式传递值是可以的。这是 MS 文档中的示例:
<Label Text="{Binding Red, Converter={StaticResource doubleToInt}, ConverterParameter=255,
StringFormat='Red = {0:X2}'}" />
我只是想排除这是我问题的根源,但我似乎无法找到如何让错误消失。如有任何帮助,我们将不胜感激。
哦,这是转换器代码,您可以看到它:
public class ColumnToCaption : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string ls_ReturnValue = "";
try
{
if (System.Convert.ToInt32(parameter.ToString()) < 0)
{
if (App.gvm_AppSettings.AutoExpire)
{
ls_ReturnValue = AppResources.Time;
}
else
{
ls_ReturnValue = AppResources.CheckedIn;
}
}
else
{
ls_ReturnValue = App.gvm_AppSettings.FormFieldCaptionText(Int32.Parse(parameter.ToString()));
}
}
catch (Exception ex)
{
App.ProcessException(ex);
}
return ls_ReturnValue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
能不能不要添加字符串资源?
...
<ContentPage.Resources>
<ResourceDictionary>
<converters:DoubleToInt x:Key="doubleToInt" />
<x:String x:Key="twoFiveFive">255</x:String>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
...
<Label Text="{Binding Red, Converter={StaticResource doubleToInt}, ConverterParameter={StaticResource twoFiveFive}}" .../>
...
</ContentPage.Content>
我的 XAML 中有如下文本绑定:
Text="{Binding Converter={StaticResource ColumnToCaption}, ConverterParameter=-1}"
它只是获取列号并根据我存储在 collection 中的数据查找该列的标题。这一直工作正常,但在最后一组升级到 Visual Studio / Xamarin 表单后,XAML intelisense 开始生成错误“无效的 属性 值”。我没有多想,因为该应用程序似乎可以正常工作。然后一些奇怪的事情开始在我的应用程序中发生,我注意到在我的错误列表中,我列出了 43 个“无效 属性 值”错误(基本上我使用 ConverterParameter 的每个地方都有一个)。
我仔细检查了 MS 文档以确保没有任何更改(此 link https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/converters)并且它仍然显示以数字形式传递值是可以的。这是 MS 文档中的示例:
<Label Text="{Binding Red, Converter={StaticResource doubleToInt}, ConverterParameter=255,
StringFormat='Red = {0:X2}'}" />
我只是想排除这是我问题的根源,但我似乎无法找到如何让错误消失。如有任何帮助,我们将不胜感激。
哦,这是转换器代码,您可以看到它:
public class ColumnToCaption : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string ls_ReturnValue = "";
try
{
if (System.Convert.ToInt32(parameter.ToString()) < 0)
{
if (App.gvm_AppSettings.AutoExpire)
{
ls_ReturnValue = AppResources.Time;
}
else
{
ls_ReturnValue = AppResources.CheckedIn;
}
}
else
{
ls_ReturnValue = App.gvm_AppSettings.FormFieldCaptionText(Int32.Parse(parameter.ToString()));
}
}
catch (Exception ex)
{
App.ProcessException(ex);
}
return ls_ReturnValue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
能不能不要添加字符串资源?
...
<ContentPage.Resources>
<ResourceDictionary>
<converters:DoubleToInt x:Key="doubleToInt" />
<x:String x:Key="twoFiveFive">255</x:String>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
...
<Label Text="{Binding Red, Converter={StaticResource doubleToInt}, ConverterParameter={StaticResource twoFiveFive}}" .../>
...
</ContentPage.Content>