【问题标题】:Give TextBlock Default Value if result returns null如果结果返回 null,则给 TextBlock 默认值
【发布时间】:2013-05-12 19:59:40
【问题描述】:

您好,如果返回的结果为空,我正在尝试为文本块提供默认值

这就是我正在尝试的!

返回的只是我设置的字符串格式!

 <TextBlock x:Name="NameTxtBlock" Grid.Column="0" Margin="0,0,40,0" FontFamily="Segoe UI" FontSize="14" Text="{Binding Name, StringFormat='Item Name: {0}'}"  Padding="2">
    <TextBlock.Style>
        <Style TargetType="TextBlock" >                                            
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=NameTxtBlock, Path=Text}" Value="{x:Null}">
                    <Setter Property="FontStyle" Value="Italic"/>
                    <Setter Property="Text" Value="No Name Found" />
                </DataTrigger>
                <DataTrigger Binding="{Binding ElementName=NameTxtBlock, Path=Text}" Value="{x:Static System:String.Empty}">
                    <Setter Property="FontStyle" Value="Italic"/>
                    <Setter Property="Text" Value="No Name Found" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

【问题讨论】:

    标签: c# wpf xaml textblock


    【解决方案1】:

    您可以使用TargetNullValue Property。如果绑定返回 Null,这将返回 TargetNullValue 而没有 StringFormat

    <TextBlock Text="{Binding Name, StringFormat='Item Name: {0}', TargetNullValue='No Name Found'}" />
    

    【讨论】:

      【解决方案2】:

      您可以直接在绑定中使用TargetNullValue 属性。

      <TextBox Text='{Binding Path=LastName, TargetNullValue="No name found."}' />
      

      【讨论】:

        【解决方案3】:

        我会将 TextBlock 绑定到不返回 null 的对象的属性;使您的属性返回默认值。看来您总是希望 FontStyle 为斜体,所以我将在触发器之外构建它。

        【讨论】:

          【解决方案4】:

          在我的应用程序中,我发现将触发器绑定到我的控件绑定到的实际对象更可靠。因此,如果我在 VM 中查看 Name 以绑定实际文本,我也会将我的数据触发器绑定到该名称。

          <TextBlock x:Name="NameTxtBlock" Grid.Column="0" Margin="0,0,40,0" FontFamily="Segoe UI" FontSize="14" Text="{Binding Name, StringFormat='Item Name: {0}'}"  Padding="2">
          <TextBlock.Style>
              <Style TargetType="TextBlock" >                                            
                  <Style.Triggers>
                      <DataTrigger Binding="{Binding Name}" Value="{x:Null}">
                          <Setter Property="FontStyle" Value="Italic"/>
                          <Setter Property="Text" Value="No Name Found" />
                      </DataTrigger>
                      <DataTrigger Binding="{Binding Name}" Value="">
                          <Setter Property="FontStyle" Value="Italic"/>
                          <Setter Property="Text" Value="No Name Found" />
                      </DataTrigger>
                  </Style.Triggers>
              </Style>
          </TextBlock.Style>
          

          【讨论】:

          • 另外,您可以使用相对源
          • 不错的方法!起初它不适用于我的情况(使用TextBox),所以我不得不使用&lt;Setter Property="Text" Value="{Binding Whatever}" /&gt;(正如另一个answer所建议的那样)。
          猜你喜欢
          • 2019-04-12
          • 1970-01-01
          • 1970-01-01
          • 2015-09-01
          • 2013-12-08
          • 2018-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多