0

監視可能なコレクションを ListBox にバインドし、データを UI (Windows Phone 8.0) に表示しようとしています。私のリストボックスには、4 つのプロパティに対して 4 つのテキストブロックがあります。

<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 に悪い印象を与えます。プロパティが空白の場合、それに関連するテキストブロックは高さを食べてはならず、次のテキストブロックはそのスペースを取る必要があります。画像を添付しています。テスト後に空白が表示されていることを確認してください。プロパティが null であるため、この空白を削除したいと考えています。 ここに画像の説明を入力

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 に答える