2010-10-14 7 views
1

J'utilise le modèle de contrôle pour afficher les éléments de la liste. Je veux définir la visibilité du contrôle en fonction de la valeur de l'élément.WPF - Contrôler le modèle et contrôler la visibilité en fonction des données

J'ai besoin le même que How can I replace an image in a WPF grid with another control depending on the source data?

Comment inclure cette option dans mon code. (Si la source d'image valeur [imgURL] est nulle que je veux régler le TextBlock [txtblkImg] visibilité à l'effondrement.)

Mon code:

 <Style x:Key="ListBoxItemStyle" TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="Background" Value="Transparent"/> 
     <Setter Property="Padding" Value="2,0,0,0"/> 
     <Setter Property="Template"> 
      <Setter.Value>      
       <ControlTemplate TargetType="{x:Type ListBoxItem}">      
        <Grid Width="150"> 
         <Grid.RowDefinitions> 
          <RowDefinition/> 
          <RowDefinition/> 
         </Grid.RowDefinitions>       
         <Image HorizontalAlignment="Center" Grid.Row="0" VerticalAlignment="Center" x:Name="img" Source="{Binding ImageUrl}" Height="74" Stretch="Fill" Width="75"/>                      
          <TextBlock TextWrapping="WrapWithOverflow" Background="LightGreen" FontSize="10" Name="txtblkImg" HorizontalAlignment="Center" VerticalAlignment="Center" Height="74" Width="75"> 
         <TextBlock Text="{Binding Title}"/><LineBreak/><LineBreak/> 
         <TextBlock Text="by "/> 
         <TextBlock Text="{Binding Author1}"/> 
         </TextBlock>               
        </Grid>      
       </ControlTemplate>     
      </Setter.Value> 
     </Setter> 
    </Style> 

Répondre

1

Vous devez utiliser un DataTrigger pour cela. Essayez ceci:

<ControlTemplate ... > 
    <ControlTemplate.Triggers> 
     <DataTrigger Binding="{Binding ImageUrl}" Value="{x:Null}"> 
      <Setter TargetName="txtblkImg" Property="Visibility" Value="Collapsed"/> 
     </DataTrigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 
Questions connexes