【问题标题】:Is it possible to concactenate a DataBound value with a constant string in XAML DataBinding?是否可以在 XAML DataBinding 中将 DataBound 值与常量字符串连接起来?
【发布时间】:2015-06-22 07:07:32
【问题描述】:

要将值绑定到TextBlock,我们使用以下语法来显示有界对象的 属性。

<TextBlock Text="{Binding Path=ItemName}" />

但是是否有一种语法可以使用上述标记将常量字符串 'Item' 与数据绑定属性连接起来,以便显示如下内容:Item TextBlock

【问题讨论】:

  • 为什么不在文本框前放一个标签?
  • 是的,实际上这就是我正在做的事情。但我想知道以上是否仍然可行。

标签: c# xaml windows-phone


【解决方案1】:

您可以在绑定中使用StringFormat,如下所示:

<TextBox Text="{Binding ItemName, StringFormat={}Item: {0}}"/>

话虽如此,编辑时可能会导致一些意外行为。例如,如果用户只编辑项目名称(不包括'Item:'文本),那么当TextBox失去焦点时,字符串格式会显示为“Item:Item:xyz”,这就有点奇怪了。可能有办法解决这个问题,但目前还没有想到。

但是,如果用户清除了整个 TextBox,然后设置了名称,那就没问题了。

否则,在TextBox 前面使用TextBlock 可能会更好。像这样:

<StackPanel Orientation="Horizontal">
    <TextBlock Text="Item:" VerticalAlignment="Center"
               Margin="0,0,6,0"/>
    <TextBox Text="{Binding ItemName}"/>
</StackPanel>

【讨论】:

  • 感谢您的回答,我在控件中犯了一个错误,我的意思是TextBlock 而不是TextBox,抱歉造成混淆。我将相应地编辑我的问题。顺便说一句,感谢有关 TextBox 的警告
猜你喜欢
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 2014-06-08
  • 2021-04-12
  • 2010-09-29
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多