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}%">