2017-11-24 10 views
0

私はViewModelを持つContentPageを持っています。このビューには、ListViewが含まれています。 XAMLでListViewItem内のlabel.Text上のLabel.Textのバインド

私はラベルと他のcontentViewを持ってMiItemViewで

<ListView> 
    <ListView.ItemTemplate> 
     <DataTemplate:> 
      <templates:miItemView/> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

を持っています。このラベルのテキストプロパティを、ViewModelのStringプロパティでバインドする方法

私のViewModel:

public class RoutePageViewModel : ViewModelBase 
{ 
    #region Views 
    private List<Citizen> _citizens; 
    private int _citizensPosition; 
    #endregion 

public List<Citizen> Citizens 
    { 
     get { return _citizens; } 
     set 
     { 
      _citizens = value; 
      RaisePropertyChanged(); 
     } 
    } 

    public String CitizensPosition 
    { 
     get { return _citizensPosition; } 
     set 
     { 
      _citizensPosition = value; 
      RaisePropertyChanged(); 
     } 
    } 

私ItemView:

<ContentView.Content> 
    <Grid 
      HorizontalOptions="FillAndExpand" 
      RowSpacing="0" 
      VerticalOptions="Fill"> 
     <Grid> 

      <!-- Name --> 
      <Label 
        x:Name="myTitle" 
        FontSize="Large" 
        Text="{Binding Name}" /> 
      <!-- AGE --> 
       <Label 
         FontSize="Small" 
         Text="{Binding Age}" /> 
     </Grid> 
     <local:PositionIndicatorView 
       /> 
    </Grid> 

そしてPositionView:

<StackLayout> 
      <Label Style="{StaticResource labelGeneralStyle}" Text="HOW BINDING WITH CitizensPosition /> 
     </StackLayout> 
+0

「CitizensPosition」は「Citizen」に属してはいけませんか?それで、あなたは 'Age'と' Name'をバインドするようにバインドできます。 –

+0

わかりません。本当に私は2つのProperties、CitizensPosition(アイテムの位置)とTotalItems(リストの合計)が必要です。それを行う最良の方法は何ですか? –

答えて

0

@Geraldによって示唆されるように、あなたはattribuとしてCitizenPositionを持つべきですあなたのシチズンモデルのテ。これは、各シチズンに対して異なる値を持つためです(リスト全体に対して単一の値を持つTotalItemsではなく)。市民のリストを初期化するコードは含まれていませんが、リストをバインドする前に各市民にポジション値を割り当てることができます。

PositionViewに別のビューを使用することで、問題を複雑にしています - なぜ、ItemView xamlの一部にするのではないのですか?その後、AgeとNameのラベルのようにCitizenPositionに直接バインドすることができます。

別のビューが必要な場合は、バインド可能な値を設定するために、バインド可能なプロパティをPositionViewに追加する必要があります。詳細はmy answer hereを参照するか、Xamarin bindable properties documentationを参照してください。

関連する問題