2016-05-06 11 views
1

Ich habe einen StackLayout in einem ListView, die ich (IsVisible="false") basierend darauf, ob das Objekt eine PerformedDate Wert ist oder nicht (voreingestellt auf null) ausblenden möchten.Xamarin XAML Conditional Styling

Gerade jetzt, ich versuche DataTriggers auf dem StackLayout unter Verwendung eines label ‚s Text als Indikator zu verwenden, um, ob das Objekt ein PerformedDate hat:

<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> 

die StackLayout Es ist nicht Hidee wenn ein PerformedDate existiert. Irgendwelche Ideen?

Ich habe auch die Path=Text.LengthValue="0" Ansatz versucht.

Antwort

2

Sie könnten eine additonal Property verwenden 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

ahh ja, ich habe auch darüber nachgedacht, diese Weise wusste nicht, ob Meine Projektanforderungen erlauben mir, das Objekt zu ändern, indem ich zusätzliche Eigenschaften hinzufüge, f oder Zwecke anzeigen. Wenn ich es so tue, akzeptiere ich. danke für deinen Beitrag :] – indubitablee