使用绑定 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 连接字符串的主要内容,如果未能解决你的问题,请参考以下文章