Xaml 列表框模板,隐藏元素

Xaml 列表框模板,隐藏元素,xaml,windows-phone-7,datatemplate,Xaml,Windows Phone 7,Datatemplate,我有一个列表框模板,显示一个图像和三个文本框。您将在下面的代码中看到它们是如何分布的。我的问题是有些项目没有图像,在这种情况下,我希望文本填充整行。 我试着不使用网格,而是使用画布,但我不知道为什么在列表框中使用画布时,什么都不显示。我不知道这是否容易做到。代码如下: <ListBox Grid.Column="0" Grid.Row="1" Background="White" HorizontalAlignment="Stretch" Name="itemList" VerticalC

我有一个列表框模板,显示一个图像和三个文本框。您将在下面的代码中看到它们是如何分布的。我的问题是有些项目没有图像,在这种情况下,我希望文本填充整行。 我试着不使用网格,而是使用画布,但我不知道为什么在列表框中使用画布时,什么都不显示。我不知道这是否容易做到。代码如下:

<ListBox Grid.Column="0" Grid.Row="1" Background="White" HorizontalAlignment="Stretch" Name="itemList" VerticalContentAlignment="Stretch" SelectionChanged="listBoxSetmana_SelectionChanged">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinWidth="480">
                <Grid.RowDefinitions>
                    <RowDefinition Height="28" />
                    <RowDefinition Height="17" />
                    <RowDefinition Height="50" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                     <ColumnDefinition Width="60" />
                     <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>

                <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.RowSpan="3" Grid.Column="0" Grid.Row="0" BorderThickness="1" BorderBrush="#FFFF003F" Padding="1">
                    <Image HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Name="listImage" Width="36" Height="36" Source="{Binding thumbnail}" />
                </Border>
                <TextBlock Padding="0 0 25 0" Grid.Column="1" Grid.Row="0" Name="title" Foreground="Black" Text="{Binding title}" FontWeight="Bold" FontSize="20" />
                <TextBlock Padding="0 0 25 0" Grid.Column="1" Grid.Row="1" Name="published" Foreground="Black" Text="{Binding published}" FontSize="13" />
                <TextBlock Padding="0 0 25 0" Grid.Column="1" Grid.Row="2" Name="subtitle" Foreground="Black" Text="{Binding subtitle}" FontSize="16" TextWrapping="Wrap" />
                <TextBlock Visibility="Collapsed" Text="{Binding id}" />
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>


谢谢大家!

有几种方法可以将其结合在一起

一种方法是:

  • 在边框上添加一些填充
  • 使用适当的ValueConverter将边框的可见性绑定到缩略图属性
  • 将列0的宽度从“60”更改为“自动”-然后当图像折叠时,它将消失

有几种方法可以将其结合在一起

一种方法是:

  • 在边框上添加一些填充
  • 使用适当的ValueConverter将边框的可见性绑定到缩略图属性
  • 将列0的宽度从“60”更改为“自动”-然后当图像折叠时,它将消失

我看不出您在提供的代码中使用了
Canvas
,但是填充值应该是逗号分隔的,而不是空格:
Padding=“0,0,25,0”
感谢您指出逗号,lackI看不到您在提供的代码中使用了
Canvas
,但是填充值应该是逗号分隔的,而不是空格:
Padding=“0,0,25,0”
感谢您指出逗号lackI,我发现了这个关于如何使用转换器()的示例,但是我的xaml不识别名称空间这个词。如何将转换器定义为资源?您需要定义名称空间-在xaml的第一个声明中,添加类似xmlns:mynamespace=“clr namespace:MyProject.Converters”的内容,这将允许您使用“mynamespace:MyConverter”来包含您的converterFantastic!谢谢你的帮助。我想我需要一本关于Silverlight的好手册。我找到了这个关于如何使用转换器()的示例,但我的xaml无法识别名称空间这个词。如何将转换器定义为资源?您需要定义名称空间-在xaml的第一个声明中,添加类似xmlns:mynamespace=“clr namespace:MyProject.Converters”的内容,这将允许您使用“mynamespace:MyConverter”来包含您的converterFantastic!谢谢你的帮助。我想我需要一本关于silverlight的好手册