如何将绑定对象转换为字符串?我尝试使用可绑定属性将文本绑定到属性,但我收到的错误是
无法从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。无法分配 property&#34; ItemSubText&#34;:&#34; Xamarin.Forms.Binding&#34;之间的类型不匹配 和&#34; System.String&#34;
答案 0 :(得分:0)
您遇到的问题可能是由您用于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}"
同时修复属性ItemSubText属性的访问者
public string ItemSubText
{
get { return (string)GetValue (SubTextProperty); }
set { SetValue (SubTextProperty, value); }
}