0

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

<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# 中做到这一点,但我在想,如果我可以制作一个 Binding 或创建一个 StackPanel,但我看到的 StackPanel 的问题是我需要在每个 TextBlock 之后创建边距

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

4

1 回答 1

1

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

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

将可见性放​​在文本块(标签和值)上,并且由于您具有自动高度,因此您不需要弄乱边距。

于 2012-12-26T15:55:46.247 回答