0

我正在尝试将可观察集合与 ListBox 绑定并在 UI(Windows Phone 8.0)上显示数据。我的列表框有四个用于四个属性的文本块,

<ListBox  x:Name="allListBox" ItemsSource="{Binding}">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <TextBlock Style="{StaticResource txtBlockStyleDate}" Text="{Binding Date}"></TextBlock>
                                <TextBlock Style="{StaticResource txtBlockStyle1}" Text="{Binding TypeOfApproval}"></TextBlock>
                                <TextBlock Style="{StaticResource txtBlockStyle2}" 
                                           Text="{Binding TypeOfRequest}" />
                                <TextBlock Style="{StaticResource txtBlockStyle3}" Text="{Binding Status}"/>
                                <TextBlock Height="30"></TextBlock>                                    
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

observable 集合中的所有对象都显示得很好,但是当任何属性没有任何值时,它的文本块仍然存在,并且它的空间是可见的,这给 UI 留下了不好的印象。你能建议我该怎么做,当任何属性为空白时,与之相关的文本块不应该吃任何高度,下一个文本块应该占用它的空间。我正在附加一张图片,测试后看到空白是可见的,因为它的属性为空,我想删除这个空间。 在此处输入图像描述

4

2 回答 2

1

您将需要一个IValueConverter,基本上的想法是您这样做:

... 插入 ...

<ListBox.Resources>
    <VisibilityConverter x:Key="VisibilityConverter"/>
</ListBox.Resources>

... 改变 ...

<TextBlock Style="{StaticResource txtBlockStyleDate}" Visibility="{Binding Date, Converter={StaticResource VisibilityConverter}}" Text="{Binding Date}"/>

在您的IValueConverter实现中,您只需查看属性是否为null空。如果是你就回来Visibility.Collapsed

于 2013-10-25T12:30:50.693 回答
1

您需要为此使用可见性转换器!如果您的绑定数据是文本,则 StringToVisibilityConverter 就可以了。

可以在此处找到有关如何执行此操作的示例:http ://www.smallandmighty.net/blog/using-value-converters-to-change-the-visibility-of-a-control

于 2013-10-25T12:26:40.077 回答