2010-10-13 64 views
1

我在列表框中显示图像。如果图片网址没有图片,则会显示包含书名和作者姓名的文本块。WPF - 列表框中的控件

问题:如果图像可用,我想隐藏文本块。

代码:

<local:ImageConverter x:Key="myImageConverter"/> 
    <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 Name="txtblkImg" HorizontalAlignment="Center" VerticalAlignment="Center" Height="74" Width="75"> 
         <TextBlock Text="{Binding Title}"/><LineBreak/> 
         <TextBlock Text="by "/> 
         <TextBlock Text="{Binding Author1}"/> 
           </TextBlock>              

        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

回答

1

可以暴露在你的视图模型描述与否的图像存在,然后设置三个的TextBlocks能见度一个布尔值(或面板包裹它们)的结合上该图像使用BooleanToVisibilityConverter存在。

C#:

public bool ImageUrlIsNotValid 
{ 
    get 
    { 
     // Test to see if the specified file exists 
    } 
} 

XAML: 在上面所示的资源

<BooleanToVisibilityConverter x:Key="boolToVisibilityConverter"/> 

并在代码:

<StackPanel Orientation="Horizontal" Visibility="{Binding ImageUrlIsNotValid, Converter={StaticResource boolToVisibilityConverter}}"> 
    <TextBlock Text="{Binding Title}"/><LineBreak/> 
    <TextBlock Text="by "/> 
    <TextBlock Text="{Binding Author1}"/> 
</StackPanel> 
+0

谢谢你的响应。你能给一些示例代码吗? – Geeth 2010-10-13 10:45:51

+0

如何传递图片url进行验证 – Geeth 2010-10-13 11:10:51

+0

您想要做什么样的验证取决于您,例如,您可以检查该位置存在的文件,或者检查是否将其加载到位图中。 – 2010-10-13 11:42:33