0
私は再利用可能なコントロールでいっぱいになったページを持つことで自分のアプリケーションを構築しようとしています。そこにあるページに応じてプロパティを設定するために、実行時にオブジェクトをカスタムコントロールにバインドしたいと思います。これまでのところ、私が試したことは正しく動作していないし、これに対してより良いアプローチがあるのだろうかと思っています。私が得ている現在のエラーは、バインディングタイプをStringに変換できないと言っています。ここまで私が試したことの一つの例があります。xamarinフォームのカスタムコントロールへのオブジェクトのバインド
ビューモデル:
public class MenuItem
{
public Page pageTo { get; set; }
public string title { get; set; }
public string subtitle { get; set; }
public string iconPath { get; set; }
}
public class VMMenuItem : ContentView
{
public MenuItem item { get; set; }
public static BindableProperty ItemProperty = BindableProperty.Create("Item", typeof(MenuItem), typeof(VMMenuItem), null, BindingMode.TwoWay,);
public VMMenuItem()
{
var menuTapped = new TapGestureRecognizer();
StackLayout Main = new StackLayout
{
BindingContext = item,
Children = {
new SectionLine(),
new StackLayout
{
Padding = new Thickness(10),
Orientation = StackOrientation.Horizontal,
HorizontalOptions = LayoutOptions.Fill,
Children = {
new Label {
Margin = new Thickness(10, 2, 0, 0),
HorizontalOptions = LayoutOptions.StartAndExpand,
Text = "{Binding title}"
},
new Label
{
Margin = new Thickness(10, 2, 10, 0),
FontSize = 14,
TextColor = Color.FromHex("#c1c1c1"),
HorizontalOptions = LayoutOptions.End,
Text = "{Binding subtitle}"
},
new Image {
HorizontalOptions = LayoutOptions.End,
Source = "{Binding iconPath}",
WidthRequest = 20
}
}
}
}
};
Main.GestureRecognizers.Add(menuTapped);
Content = Main;
}
public MenuItem menuItem
{
get { return (MenuItem)GetValue(ItemProperty); }
set { SetValue(ItemProperty, value); }
}
}
ページフロントエンド:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:local="clr-namespace:TamarianApp;assembly=TamarianApp" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="TamarianApp.RugPage">
<Grid>
<local:VMMenuItem menuItem="{Binding lengthMenuItem}"></local:VMMenuItem>
</Grid>
</ContentPage>
ページバックエンド:あなたがここにバインド可能なプロパティを使用する必要が
public partial class RugPage : ContentPage
{
MenuItem lengthMenuItem;
public RugPage()
{
InitializeComponent();
App.currentPage = this;
BindingContext = App.rug;
lengthMenuItem = new MenuItem
{
title = "length",
iconPath = "icons/blue/next",
subtitle = "somelength"
};
}
}
は、私が使用しようとしてきたが、それはそれは可能System.String型に結合タイプを変換することはできませんと言って私にエラーを与え続けて厥。