2017-11-24 9 views
0

ViewModel이있는 ContentPage가 있습니다. 이 뷰에는 ListView가 포함되어 있습니다. XAML에 레이블이있는 문자열 바인딩 ListViewItem 내 ContentView의 텍스트

은 내가 레이블 다른있는 contentView를 MiItemView에

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

있습니다. 이 레이블의 텍스트 속성을 내 ViewModel의 String 속성으로 바인딩 할 수 있습니까?

내 뷰 모델 :

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 : @Gerald에 의해 제안

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

'CitizensPosition'이 '시민'의 일부가 아니어야합니까? 그럼'Age'와'Name'을 묶는 것처럼 바인딩 할 수 있습니다. –

+0

잘 모르겠습니다. 정말로 두 개의 Properties, CitizensPosition (항목의 위치) 및 TotalItems (목록의 합계)가 필요합니다. 가장 좋은 방법은 무엇입니까? –

답변

0

당신이 attribu로 CitizenPosition을 가져야한다 네 시민 모델의 테. 이것은 각 시민에 대해 다른 값을 갖기 때문에 있어야합니다 (전체 목록에 대해 단일 값을 갖는 TotalItems와 반대). 시민 목록을 초기화하는 코드는 포함시키지 않았지만 목록을 바인딩하기 전에 각 시민에게 위치 값을 지정할 수 있습니다.

PositionView에 별도의보기를 사용하면 문제가 복잡해집니다 - 왜 ItemView xaml에 포함시키지 않는 것이 좋을까요? 그런 다음 Age 및 Name 레이블과 마찬가지로 CitizenPosition에 직접 바인딩 할 수 있습니다.

별도의보기가 필요한 경우 바인딩 할 수 있도록 값을 설정하려면 PositionView에 바인딩 가능한 속성을 추가해야합니다. 자세한 내용은 my answer here을 참조하거나 Xamarin bindable properties documentation을 참조하십시오.