2012-04-08 6 views
0

Können Sie diesen Tag sehen:Wie wird ein Standardwert für ein DataTemplate festgelegt?

<Image Source="{Binding Image}" Stretch="UniformToFill"/> 

Aber unten? Was ich versuche, ist, wenn das Bild null ist, ein anderes Standardbild einzustellen. Ist das möglich?

<!-- Grid-appropriate 250 pixel square item template as seen in the GroupedItemsPage and ItemsPage --> 
<DataTemplate x:Key="Standard250x250ItemTemplate"> 
    <Grid HorizontalAlignment="Left" Width="320" Height="240"> 
     <Border Background="{StaticResource ListViewItemPlaceholderRectBrush}"> 
      <Image Source="{Binding Image}" Stretch="UniformToFill"/> 
     </Border> 
     <StackPanel VerticalAlignment="Bottom" Background="{StaticResource ListViewItemOverlayBackgroundBrush}"> 
      <TextBlock Text="{Binding ShortTitle}" Foreground="{StaticResource ListViewItemOverlayTextBrush}" Style="{StaticResource TitleTextStyle}" Height="48" Margin="15,0,15,0"/> 
     </StackPanel> 
    </Grid> 
</DataTemplate> 

Antwort

1

eine Style mit einem DataTrigger hinzufügen. z.B. so etwas wie

<Image Stretch="UniformToFill"> 
    <Image.Style> 
     <Style TargetType="Image"> 
      <Setter Property="Source" Value="{Binding Image}"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Image}" Value="{x:Null}"> 
        <Setter Property="Source" Value="Images/Default.png"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 

Watch out für precedence von lokalen Werte.

+0

vielleicht bin ich falsch, was es passiert ist .. Ich Windows8 und VS2008 in einem Grid Application bin mit .. und es sagt mir: Die aufsteckbaren Eigenschaft Auslöser nicht in der Art gefunden wurde –

+0

Sie müssten die 'Style.Triggers' in ein Element einfügen, das * nicht * ein' Style' ist, damit ein solcher Fehler auftritt. Sind Sie sicher, dass Sie die richtige Struktur haben? 'Trigger' ist nur eine normale Eigenschaft eines' Style', nicht eines [angefügt] (http://msdn.microsoft.com/en-us/library/ms749011.aspx). –

+0

Nun, wie ich Ihnen sage, ich benutze VS 2011 (nicht 2008, sorry), und da ich eine U-Bahn-Anwendung erstellen, ist das vielleicht der Grund –

0

Ich bin mir nicht sicher, ob Sie einen Trigger benötigen Ich verwende normalerweise einen Fallback-Wert wie unten, wenn ich einen Wert angeben muss, wenn der gebundene Wert nicht konvertiert wird.

<Image Source="{Binding Path=ImageURI, FallbackValue='SomeImageURI'}" /> 

Microsoft FallbackValue Property