イメージと2行のテキストを持つ 'CardView'コントロールを作成しています。私のページで 、私は値を割り当てた場合、画像は私がデータバインディング式を使用している場合しかし、それは動作しません、レンダリング...イメージはXAML(Xamarin User Control)でバインドされていません
ここでは、コントロールである:ここでは
public partial class CardView : Frame
{
public CardView()
{
BindingContext = this;
InitializeComponent();
}
public static readonly BindableProperty TitleProperty = BindableProperty.Create(nameof(Title), typeof(string), typeof(CardView), null, BindingMode.OneWay);
public string Title
{
get { return (string)GetValue(TitleProperty); }
set { SetValue(TitleProperty, value); }
}
public static readonly BindableProperty SubtitleProperty = BindableProperty.Create(nameof(Subtitle), typeof(string), typeof(CardView), null, BindingMode.OneWay);
public string Subtitle
{
get { return (string)GetValue(SubtitleProperty); }
set { SetValue(SubtitleProperty, value); }
}
public static readonly BindableProperty ImageSourceProperty = BindableProperty.Create(nameof(ImageSource), typeof(ImageSource), typeof(CardView), null, BindingMode.OneWay);
public ImageSource ImageSource
{
get { return (ImageSource)GetValue(ImageSourceProperty); }
set { SetValue(ImageSourceProperty, value); }
}
}
はのためのXAMLですコントロール:私のviewmodelクラスで
<StackLayout HorizontalOptions="FillAndExpand" >
<Image HorizontalOptions="FillAndExpand"
Source="{Binding ImageSource}" />
<Label Text="{Binding Title}"
HorizontalOptions="FillAndExpand" />
<Label Text="{Binding Subtitle}"
HorizontalOptions="FillAndExpand" />
</StackLayout>
:ここ
public class SettingsPageViewModel : ViewModelBase
{
public SettingsPageViewModel(INavigationService navigationService) : base(navigationService)
{
Title = "Title";
}
public string Subtitle => "Subtitle";
public string Image => "icon.png";
}
は私ですバインディングが失敗するページのXAML:
<controls:CardView Title="No Bound Title" Subtitle="No Bound SubTitle" ImageSource="icon.png">
</controls:CardView>
<controls:CardView BindingContext="{Binding .}" Title="{Binding Title}" Subtitle="{Binding Subtitle}" ImageSource="{Binding Image}">
</controls:CardView>
コントロールの最初のインスタンスが正しくレンダリングされます。 2番目のインスタンスに画像が表示されません。
私は 'BindingContext = this'を削除し、 'Binding'を 'TemplateBinding'に変更し、2つの空のレンダリングコントロールを取得します。バインディングはまったく機能しません。 –
それは変です。出力ウィンドウにエラーが表示されていませんか?そして、あなたのコントロールをテンプレート化する 'ControlTemplate'の中に' StackLayout'がネストされていますか? – Grx70