2013-10-25 184 views
0

我想绑定一个ListBox的可观察集合并在UI(Windows Phone 8.0)上显示数据。 我的列表框有四个文本块四个属性,列表框值显示在Windows Phone 8

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

在观察的集合中的所有对象都显示正常,但是当所有的财产不具有任何价值,它的文本块仍然存在,而且它的空间可见的一种,这给UI带来了不好的印象。 你可以建议我应该做什么,当任何属性是空白时,相关的文本块不应该吃任何高度,下一个文本块应该占用它的空间。 我附加一个图片,看看测试后的空白空间是否可见,因为它的属性为空,我想删除这个空间。

回答

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

+0

谢谢..我得到了这个。 – Maverick

+0

其工作正常的字符串,你能建议我应该怎么做DateTime数据类型。当我传递DateTime值时,gettting失败。 (String.IsNullOrEmpty((string)value)) { return Visibility.Collapsed; } else return Visibility.Visible; – Maverick

+0

@Maverick你能更具体吗?它的失败是什么意思? – gleng