2017-05-09 1 views
0

하나의 조건에 따라 어떤 레이아웃을 초기화할지 선택할 수있는 방법이 있습니까? 나는 축구 통계에 대한 그리드가 있지만 myViewModel.Sport == Sports.Basketball 완전히 다른 레이아웃을로드하고 싶습니다.Xamarin.Forms (XAML) : 조건에 따라 다른 레이아웃

나는 각보기에 Datatrigger과 같은 것을 시도했지만 나를 위해 엉망 보인다

<Label Text="{Binding Goals}" 
     Grid.Row="1" Grid.Column="0"> 
    <Label.Triggers> 
     <DataTrigger TargetType="Label" 
        Binding="{Binding Sport}" 
        Value="1"> 
      <Setter Property="Text" 
        Value="{Binding Points}"/> 
     </DataTrigger> 
    </Label.Triggers> 
</Label> 

나는 "목표"가 표시하지만, 스포츠 열거 값은 1 (Sports.Basketball) I 인 경우 "포인트"로 변경하십시오. 나는 이것을하기 위해 적절한 방법이 필요하기 때문에 많은 라벨과 이미지로 이것을하고 싶다.

누군가 나를 도울 수 있습니까? 내 ViewModel의 Sport Property에 따라 다른 Grid를로드해야합니다.

+0

전체 페이지를 모두 밀어 넣지 않는 이유는 무엇입니까? –

+0

@Gerald 내 페이지는 Tabbed 페이지의 일부입니다. 나는 그것이 효과가 없어야한다고 생각한다, 그렇지? –

+0

당신이 할 수있는 또 다른 일은 각기 다른 스포츠를 자신 만의 뷰에두고 페이지에 모든 뷰를 추가하고 표시 할 스포츠에 따라 'IsVisible' 속성을 설정하는 것입니다. –

답변

1

당신이 할 수있는 또 다른 일은 각각의 스포츠를 자신 만의 뷰에두고 페이지에 모든 뷰를 추가하고 표시 할 스포츠에 따라 IsVisible 속성을 설정하는 것입니다.

예는 의사 코드에 다음과 같이 보일 것이다 :

<Page> 
    <Grid> 
     <BasketballView IsVisible="{Binding IsBasketball}"> 
     <SoccerView IsVisible="{Binding IsSoccer}"> 
     <FootballView IsVisible="{Binding IsFootball}"> 
    </Grid> 
</Page> 

그런 다음 뷰 모델에서 적절한 부울 값을 설정합니다.

+2

비싸다. 보기가 보이지 않더라도보기가 작성 될 수 있습니다. –

관련 문제