是否可以在 XAML DataBinding 中将 DataBound 值与常量字符串连接起来?
Is it possible to concactenate a DataBound value with a constant string in XAML DataBinding?
要将值绑定到 TextBlock
,我们使用以下语法来显示绑定对象的 属性。
<TextBlock Text="{Binding Path=ItemName}" />
但是是否有一种语法可以使用上述标记将常量字符串 'Item' 与数据绑定 属性 连接起来,以便显示如下内容: Item 在 TextBlock
您可以在绑定中使用 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
,我们使用以下语法来显示绑定对象的
<TextBlock Text="{Binding Path=ItemName}" />
但是是否有一种语法可以使用上述标记将常量字符串 'Item' 与数据绑定 属性 连接起来,以便显示如下内容: Item TextBlock
您可以在绑定中使用 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>