2016-05-06 4 views
1

Я имею в ListView, что я хочу, чтобы скрыть (IsVisible="false") на основании того, имеет ли объект значение PerformedDate или нет (дефолт null) в StackLayout.Xamarin XAML Условный Styling

Сейчас я пытаюсь использовать DataTriggers на StackLayout с использованием текста в виде label «s как индикатор, имеет ли объект а PerformedDate:

<Label x:Name="PerformedDateLabel" Text="{Binding PerformedDate}" IsVisible="True"/> 
<StackLayout Padding="0, 25, 0, 0" Spacing="0"> 
    <Label Text="{Binding Date, StringFormat='{0:dd}'}" FontSize="Small" HorizontalOptions="Center"/> 
    <Label Text="{Binding Date, StringFormat='{0:MMM}'}" HorizontalOptions="Center"/> 
    <StackLayout.Triggers> 
     <DataTrigger TargetType="StackLayout" Binding="{Binding Source={x:Reference PerformedDateLabel}, Path=Text}" Value=""> 
      <Setter Property="IsVisible" Value="False"/> 
     </DataTrigger> 
    </StackLayout.Triggers> 
</StackLayout> 

Это не hidee в StackLayout когда существует PerformedDate. Любые идеи?

Я также пробовал подход Path=Text.LengthValue="0".

ответ

2

Вы можете использовать вывода дополнительных недвижимости HasPerformedDate

C#

public DateTime? PerformedDate 
{ 
    get { return _performedDate; } 
    set 
    { 
     _performedDate = value; 
     OnPropertyChanged(); 
     OnPropertyChanged(nameof(HasPerformedDate)); 
    } 
} 

public bool HasPerformedDate => PerformedDate.HasValue; 

Xaml

<Label x:Name="PerformedDateLabel" Text="{Binding PerformedDate}" IsVisible="True"/> 
<StackLayout Padding="0, 25, 0, 0" Spacing="0" IsVisible="{Binding HasPerformedDate}"> 
    <Label Text="{Binding PerformedDate, StringFormat='{0:dd}'}" FontSize="Small" HorizontalOptions="Center"/> 
    <Label Text="{Binding PerformedDate, StringFormat='{0:MMM}'}" HorizontalOptions="Center"/> 
</StackLayout> 
+0

ааа да, я тоже думал об этом пути, не знал, мои требования к проекту позволили бы мне изменить объект, добавив дополнительные свойства, в частности f или зрения. если я закончу это так, я соглашусь. спасибо за ваш вклад:] – indubitablee