3

我有一个 TextBlock,我正在尝试将文本绑定到一个很棒的字体字符以用作复选框。我有一个返回字符串的属性,但似乎有些东西正在将其转换为字符串而不是字符。

这有效并绘制了一个复选框:

<TextBlock Text="&#xf096;" FontFamily="/Resources/fontawesome-webfont.ttf#FontAwesome" />

此组合不会:

public class myObject 
{
    public string MyString
    {
        get { return "&#xf096;" }
    }
}

<TextBlock Text{Binding MyString} FontFamily="/Resources/fontawesome-webfont.ttf#FontAwesome" />

相反,它会绘制实际的字符串(使用 #xf096; 等),就好像它被转义了一样。

任何想法为什么或如何使它返回未引用的字符?

谢谢!

4

2 回答 2

13

看起来您的目标可以使用unicode转义序列来实现:

public class myObject 
{
   public string MyString
   {
      get { return "\uf096"; }
   }
}

<TextBlock Text="{Binding MyString}" FontFamily="../Resources/fontawesome-webfont.ttf#FontAwesome" />

然后即使由 Binding 提供,也会处理字符串。我在台式机上对其进行了测试,但我认为这在手机版本上也应该可以工作。

于 2013-10-25T09:26:48.260 回答
0

好吧,我不确定这是否是原因,但是您的 TextBlock 应该读取Text="{Binding MyString}"(您缺少引号和等号)并且您还应该确保页面/控件/任何内容的 DataContext 设置为MyObject 类的实例,以便可以拾取它。最后,如果您打算更新绑定,您的属性可能需要实现 INotifyPropertyChanged。

于 2013-10-24T22:13:41.587 回答