Конвертировать Xamarin.Forms.Binding в System.string
Как бы вы преобразовали объект привязки в строку? Я пытаюсь привязать текст к свойству, используя свойство привязки, но получаю сообщение об ошибке
невозможно преобразовать из Xamarin.Forms.Binding в System.string.
Я предполагал, что BindableProperty returnType typeof(string) поймал бы это.
Вот мой код переднего плана (App.rug.Length - строка):
<local:MenuItem ItemTitle="Length" ItemImage="icons/blue/next" ItemSubText="{Binding App.rug.Length}" PageToo="{Binding lengthpage}"/>
Вот мой внутренний код:
public class MenuItem : ContentView
{
private string itemsubtext { get; set; }
public static BindableProperty SubTextProperty = BindableProperty.Create("ItemSubText", typeof(string), typeof(MenuItem), null, BindingMode.TwoWay);
public MenuItem()
{
var menuTapped = new TapGestureRecognizer();
menuTapped.Tapped += PushPage;
StackLayout Main = new StackLayout
{
Children = {
new SectionLine(),
new StackLayout {
Padding = new Thickness(10),
Orientation = StackOrientation.Horizontal,
HorizontalOptions = LayoutOptions.Fill,
Children = {
new Label {
Margin = new Thickness(10, 2, 10, 0),
FontSize = 14,
TextColor = Color.FromHex("#c1c1c1"),
HorizontalOptions = LayoutOptions.End,
Text = this.ItemSubText
}
}
}
}
};
Main.GestureRecognizers.Add(menuTapped);
Content = Main;
}
public string ItemSubText
{
get { return itemsubtext; }
set { itemsubtext = value; }
}
}
Вот ошибка:
Xamarin.Forms.Xaml.XamlParseException: позиция 26:68. Невозможно назначить свойство "ItemSubText": несоответствие типов между "Xamarin.Forms.Binding" и "System.String"
1 ответ
Проблема, которую вы получаете, вероятно, вызвана привязкой, которую вы использовали для свойства subtext.
Ваша переменная App.rug.Length
является статической переменной, поэтому вам нужно будет указать ее в привязке, как показано ниже
<local:MenuItem ItemTitle="Length" ItemImage="icons/blue/next" ItemSubText="{Binding Source={x:Static local:App.rug.Length}}" PageToo="{Binding lengthpage}"/>
где
xmlns:local="clr-namespace:{App Namespace here}"
Также исправьте ваши свойства Accessors для свойства ItemSubText
public string ItemSubText
{
get { return (string)GetValue (SubTextProperty); }
set { SetValue (SubTextProperty, value); }
}