C# 4.0 包含大量信息的网格-空时不显示

C# 4.0 包含大量信息的网格-空时不显示,c#-4.0,windows-runtime,winrt-xaml,C# 4.0,Windows Runtime,Winrt Xaml,我有一个非常大的网格,我在下面显示了我的一些XAML,但是如果值为空,它不应该在行上显示TextBlocks 我怎样才能创造呢 <Grid x:Name="JobDetailGrid"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="A

我有一个非常大的网格,我在下面显示了我的一些XAML,但是如果值为空,它不应该在行上显示TextBlocks
我怎样才能创造呢

<Grid x:Name="JobDetailGrid">
   <Grid.RowDefinitions>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="Auto"/>
   </Grid.RowDefinitions>
   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="Auto"/>
      <ColumnDefinition Width="10" />
      <ColumnDefinition Width="*"/>
   </Grid.ColumnDefinitions>
   <TextBlock Grid.Row="0" Grid.Column="0" x:Uid="JobDetailTaskType" />
   <TextBlock Grid.Row="0" Grid.Column="2" x:Uid="JobDetailTaskTypeSrv" Text="{Binding TaskType}" />
   <TextBlock Grid.Row="1" Grid.Column="0" x:Uid="JobDetailStatus" />
   <TextBlock Grid.Row="1" Grid.Column="2" x:Uid="JobDetailStatusSrv" Text="{Binding Status}" />
   <TextBlock Grid.Row="4" Grid.Column="0" x:Uid="JobDetailApproved" />
   <TextBlock Grid.Row="4" Grid.Column="2" x:Uid="JobDetailApprovedSrv" Text="{Binding Approved}" />

也许我可以用C#来做,但是我在想,如果我可以做一个绑定或者创建一个StackPanel,但是StackPanel的问题是,我需要在每个文本块之后创建边距


或者我需要为此创建自己的用户控件吗?

这可以通过绑定轻松完成!您需要创建一个包含字符串的文本块,并返回可见性(因此空字符串将隐藏文本框),然后按如下所示设置文本块的可见性:-

<TextBlock Grid.Row="0" Grid.Column="0" x:Uid="JobDetailTaskType" Visibility={Binding TaskType, Converter={StaticResource visibilityConverter}}/>


将可见性放在文本块(标签和值)上,因为您有自动显示的高度,所以您不需要乱加边距。

行也隐藏了吗?是的,因为它设置为自动-您不想隐藏它吗?如果没有值,是的