使用绑定 XAML 连接字符串

Posted

技术标签:

【中文标题】使用绑定 XAML 连接字符串【英文标题】:Concatenate String with Bindings XAML 【发布时间】:2016-09-12 15:06:40 【问题描述】:

是否可以在同一个标​​签中包含一些静态文本和可绑定上下文?

<Label Text = "$Binding totalCost"
       x:Name = "totalCost"
       HorizontalOptions = "Start"
       VerticalOptions = "Start"
       Grid.Row = "6" Grid.Column = "1"/>

除了显示为“$Binding totalCost”

我知道我可以通过 totalCost.Text = String.Format("$0", totalCost); 之类的操作轻松设置字段,但只是想看看是否可以采用其他方式

【问题讨论】:

这能回答你的问题吗? Concatenate strings instead of using a stack of TextBlocks 【参考方案1】:

看看这是否适合你:

Text="Binding totalCost, StringFormat=$0"

【讨论】:

谢谢!这确实对我有用。如果允许,我会在 5 分钟内接受你的回答。 这太棒了。也在 WPF 核心中工作。【参考方案2】:

对于标签,还有一个附加功能:ContentStringFormat,示例如下:

<Label Content="Binding Tag, FallbackValue=Custom" ContentStringFormat="Length: 0" DataContext="Binding ElementName=cbRebarLength, Path=SelectedItem"/>

【讨论】:

【参考方案3】:

我正在考虑 .NET 做你想做的事情的方式,即格式值字符串作为货币,使用绑定属性 StringFormat 和 Currency Format Specifier:

Text="Binding totalCost, StringFormat=\0:C\"

您的代码将如下所示

<Label Text="Binding totalCost, StringFormat=\0:C\"
   x:Name = "totalCost"
   HorizontalOptions = "Start"
   VerticalOptions = "Start"
   Grid.Row = "6"
   Grid.Column = "1"/>

干杯。

【讨论】:

【参考方案4】:

尽管选择的答案是正确的,但您将忽略您的货币价值或潜在期限中的逗号。更好的方法是公开一个为绑定提供适当值的 get 属性。下面是以后任何人的代码sn-p

<Label Text = "$Binding TotalCostFormatted"
      x:Name = "totalCost"
      HorizontalOptions = "Start"
      VerticalOptions = "Start"
      Grid.Row = "6" Grid.Column = "1"/>

在您的视图模型中

double totalCost;
public double TotalCost 

    get  return totalCost; 
    set 
    
        totalCost = value;
        OnPropertyChanged(nameof(TotalCostFormatted));
    

public string TotalCostFormatted

    get  return TotalCost.ToString("C0");  

请记住,您始终可以在 ViewModel 中创建一个 get 属性来公开一些数据。调用OnPropertyChanged 或任何实现INotifyPropertyChanged 接口的方法。如果您想要美元价值的美分,请将“C0”更改为“C”。

【讨论】:

以上是关于使用绑定 XAML 连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

可以使用XAML向Label添加多个绑定吗?

XAML WebView绑定到不在Xamarin Forms中的字符串

将字符串项绑定到 xaml 中字符串的依赖属性列表

带转换器的多重绑定中的 XAML 字符串格式

是否可以在 xaml 中绑定后添加更多字符?

XAML绑定到资源文件字符串时失败