2017-05-17 5 views
0

ラベルを合成値にバインドする必要があります。これは、モデル内の2つの値で構成されています。私はそうするためにValueConverterを使用しようとしていますが、オブジェクト自体をValueConverterに渡す方法を理解することはできません。ここに私のコードは次のとおりです。XAMLで :DetailsConverter.csでValueConverter - 自己へのバインド

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     xmlns:local="clr-namespace:MyApp;assembly=MyApp" 
     x:Class="MyApp.SavedDetailsPage"> 
    <ContentPage.Resources> 
     <ResourceDictionary> 
      <local:DetailsConverter x:Key="detailsCvt" /> 
     </ResourceDictionary> 
    </ContentPage.Resources> 
    ... 
    <Label Text="{Binding ???, Converter={StaticResource detailsCvt}}" FontSize="Small" TextColor="Gray" /> 
    ... 

: ''

class DetailsConverter : IValueConverter 
{ 
    object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     MyModel myModel = (MyModel)value; 
     return (myModel.FirstName + " " + myModel.LastName); 
    } 
    ... 

私が使用してみました自己への束縛のために、しかしそれはうまくいかなかった。

このプロパティをMyModelに追加すると、オブジェクト自体にアクセスできるようになりました。そのため、XAMLバインディングで 'This'を渡すことができますが、これが最善の方法かどうかはわかりません。

ありがとうございます!

+0

のいずれかを使用することができ、ViewModelににバインドするには? MVVMフレームワークを使用していますか? –

+0

PageのBindingContextはどこで設定されていますか? –

+1

もう一つの回避策は、あなたのためにあなたのコンポジションを行うモデルにプロパティを導入することです。 –

答えて

2

はあなたのBindingContextが設定されている方法は、次の構文

{Binding} 
{Binding .} 
{Binding Path="."} 
関連する問題