2013-10-25 169 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