2010-10-14 4 views
1

Я использую шаблон управления для отображения элементов списка. Я хочу установить видимость элемента управления на основе значения элемента.WPF - контроль шаблона и контроль видимости на основе данных

мне нужен такой же, как How can I replace an image in a WPF grid with another control depending on the source data?

Как включить эту опцию в моем коде. (Если исходное изображение [ImgUrl] значение равно нулю, я хочу, чтобы установить TextBlock [txtblkImg] видимость разрушиться.)

Мой код:

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

ответ

1

Вы должны использовать DataTrigger для этого. Попробуйте следующее:

<ControlTemplate ... > 
    <ControlTemplate.Triggers> 
     <DataTrigger Binding="{Binding ImageUrl}" Value="{x:Null}"> 
      <Setter TargetName="txtblkImg" Property="Visibility" Value="Collapsed"/> 
     </DataTrigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 
Смежные вопросы