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

Wpf 在xaml中绑定后是否可以添加更多字符?,wpf,xaml,binding,Wpf,Xaml,Binding,我在想些什么,找不到任何相关的话题。我有以下约束力: Content="{x:Static resx:Resource.Form_OtherOption_Description}" 这将在标签中放置一个字符串。我问自己是否可以在绑定之后添加“:”,而不是在代码中,只是在xaml中。标签表示类似“Name:”的内容。但添加“:”作为绑定的一部分不是一个选项 编辑 我在3.5版本中工作 任何建议 提前感谢。您可以创建一个转换器,它接受输入字符串并添加“:” Xaml: ... 或者类似的。试过

我在想些什么,找不到任何相关的话题。我有以下约束力:

Content="{x:Static resx:Resource.Form_OtherOption_Description}"
这将在标签中放置一个字符串。我问自己是否可以在绑定之后添加“:”,而不是在代码中,只是在xaml中。标签表示类似“Name:”的内容。但添加“:”作为绑定的一部分不是一个选项

编辑

我在3.5版本中工作

任何建议


提前感谢。

您可以创建一个转换器,它接受输入字符串并添加“:”

Xaml:


...
或者类似的。试过了,至少对我的消息来源有效

如果在
ConverterParameter
中有空格等,可以使用单引号来确保它不会被丢弃


编辑:哦,对了。。。是 啊还有一个我以前从未使用过的
StringFormat
,ehehehe…

试试Binding的属性-它可以做你想做的事情。

你可以通过以下方法来完成:

<TextBlock Text="{Binding Source={x:Static resx:Resource.Form_OtherOption_Description},
                         StringFormat={}{0}:}" />

您还可以将多重绑定与StringFormat一起使用,例如:

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="ID {0} Name: {1} Age: {2}">
            <Binding Source="{x:Static resx:SomeResx.ID}"/>
             <Binding Path="Name"/>
             <Binding Path="Age"/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>


您可以在内容控件TextBlock TextBlock.Text中使用此选项(很抱歉,我无法显示上面的代码)

如果您使用的是WPF 4.0,您还可以执行以下操作:

<TextBlock>
       <Run Text="{Binding SomeLabel}"/>
       <Run Text=":"/>
</TextBlock>

这实际上连接了来自两个
Run
标记并复制到
TextBlock.Text
property!中的两个字符串

使用这种方法,您甚至可以绑定到presenter中的不同属性,并将其显示在单个
TexBlock
中。请看这个极好的例子:

是的,你可以。在这里,我在windows phone中绑定文本(clouds.all)后添加了“测试”

<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}testing}"/>

如果在进度条内使用标签,则可以使用以下方法:

<Label x:Name="Progress" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontWeight="Bold" Foreground="White" Opacity=".7" 
       Content="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}" ContentStringFormat="{}{0}%">


通过这种方式,您可以可视化添加了%的progressbar的值。

+1,您也找到了答案:)因此
ContentControl
具有
ContentStringFormat
HeaderedContentControl
具有
HeaderStringFormat
,而
ItemsControl
具有
ItemStringFormat
。众所周知,
Label.Content
不会从绑定中拾取
StringFormat
,因为
TargetType
不是
string
,而是
对象。在
TextBlock.Text
的情况下,目标类型是
string
,因此它在绑定中使用。这是一个不错的选择-虽然没有那么简单,但您可以向标签内容添加一个TextBlock,但这会增加额外的开销。根据sixlettervariables,标签上面的答案使用contentStringFormat。要使上述多重绑定与标签一起工作,请将TextBlock分配给其内容。如果您使用的是3.5版本,则很可能需要使用@H.B.的解决方案。
<TextBlock>
       <Run Text="{Binding SomeLabel}"/>
       <Run Text=":"/>
</TextBlock>
<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}testing}"/>
<Label x:Name="Progress" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontWeight="Bold" Foreground="White" Opacity=".7" 
       Content="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}" ContentStringFormat="{}{0}%">