RowDefinition的行为差异Height =“Auto”,WP7和WP8之间有空TextBlock

时间:2013-06-11 23:15:08

标签: windows-phone-7 windows-phone-8 windows-phone

我在ItemsControl中使用了一个DataTemplate,它有一个包含3行的网格:

            <Grid Margin="12,0,0,4">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="80" />
                    <ColumnDefinition Width="330" />
                    <ColumnDefinition Width="30"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <TextBlock Text="{Binding Due}" 
                           Foreground="CornflowerBlue" 
                           FontSize="28"
                           HorizontalAlignment="Center" />
                <TextBlock Text="{Binding Expected.Value}" 
                           Foreground="Red" 
                           FontSize="16"
                           Grid.Row="1"
                           Grid.RowSpan="2"
                           HorizontalAlignment="Center" />
                <TextBlock Text="{Binding Destination}" 
                           Grid.Column="1" 
                           FontSize="28"
                           TextWrapping="Wrap"
                           HorizontalAlignment="Left" />
                <TextBlock Text="{Binding Via}" 
                           Grid.Column="1" 
                           Grid.Row="1" 
                           Foreground="Gray"
                           FontSize="16"
                           HorizontalAlignment="Left" />
                <TextBlock Text="{Binding Status}" 
                           Grid.Column="1" 
                           Grid.Row="2" 
                           FontSize="16"
                           HorizontalAlignment="Left" />
                <TextBlock Text="{Binding Platform.Value}" 
                           Grid.Column="2"
                           Grid.RowSpan="3"
                           FontSize="40"
                           VerticalAlignment="Top"
                           HorizontalAlignment="Center" />
            </Grid>

在某些项目上,Via绑定将有一个空字符串,而在WP7上会导致中间行崩溃。但是当我将项目转换为WP8时,行为是不同的,我得到一个空行,就好像它为textblox保留了空间,即使它没有文本。

如何在这种情况下强制WP8与WP7具有相同的行为?

1 个答案:

答案 0 :(得分:1)

古斯塔沃,

虽然我没有遇到同样的问题,但我可以向你保证,WP7和WP8偶尔表现不同。

在这种特殊情况下,您可能希望在文本框上有一个可见性转换器,它将根据绑定文本的内容切换可见性。

这是同样的解决方案 http://invokeit.wordpress.com/2013/07/04/converter-to-toggle-visibility-when-content-is-empty-wpdev-wp8dev-wp7dev-win8dev/