首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Windows Phone 8.1Xaml StringFormat

Windows Phone 8.1Xaml StringFormat
EN

Stack Overflow用户
提问于 2014-06-10 03:12:05
回答 3查看 8.1K关注 0票数 15

我尝试在绑定数据的同时显示一些文本,例如,我有以下代码:

代码语言:javascript
复制
<TextBlock Text="{Binding Shorthand}"  Style="{ThemeResource ListViewItemTextBlockStyle}" />

我想在“速记”之前添加一些文本,从我读到的内容来看,这可以通过使用StringFormat作为绑定的属性来实现,类似于:

代码语言:javascript
复制
<TextBlock Text="{Binding Path=Shorthand, StringFormat={0} text I want to add}"  Style="{ThemeResource ListViewItemTextBlockStyle}" />

然而,这似乎不起作用,在8.1中,这不再是做事情的方式吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-10 03:26:20

WinRT不支持StringFormat。但是,您可以通过创建自定义转换器轻松地替换它:

代码语言:javascript
复制
public class StringFormatConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return string.Format(parameter as string, value);
    }  

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return null;
    }
}

然后在页面资源中声明它:

代码语言:javascript
复制
<Page.Resources>
    <local:StringFormatConverter x:Name="StringFormat"/>
</Page.Resources>

并在绑定中使用它:

代码语言:javascript
复制
<TextBlock Text="{Binding Path=SomeText, Converter={StaticResource ResourceKey=StringFormat}, ConverterParameter='Hello {0}'}" />
票数 30
EN

Stack Overflow用户

发布于 2014-06-10 03:47:33

就像@KooKiz指出目前还不支持StringFormat,但你可以在没有转换器的情况下将你的代码行分成内联运行,达到同样的效果;

代码语言:javascript
复制
<TextBlock>
   <Run Text="Hey I wanted to put this text in front of "/>
   <Run Text="{Binding Path=Shorthand}"/>
   <Run Text=" and I also wanted some text after it. Neato.."/>
</TextBlock>

希望这能帮上忙,干杯。

票数 16
EN

Stack Overflow用户

发布于 2015-10-13 02:53:41

我使用了这种方法(由微软编写):https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.data.ivalueconverter

它工作得很好!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24127262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档