转换后返回Segoe MDL2图标的转换器不起作用

时间:2015-08-26 03:42:16

标签: xaml data-binding

我正在尝试将PlayerFramework.MediaPlayer.CanPause属性绑定到我的Windows 10通用应用程序中的按钮。这可以使用默认字体,但是当我切换到Segoe MDL2以获得那些花哨的图标时,按钮显示垃圾。

<mmppf:MediaPlayer x:Name="mediaElement">

...

<Button Name="btnPlay" 
        Style="{StaticResource transportStyle}"  Content="{Binding CanPause, ElementName=mediaElement, Converter={StaticResource CanPauseToPlayPauseConverter}}"/>

这是来自转换器:

public object Convert(object value, Type targetType, object parameter, string language)
    {
        bool canPause = (bool)value;
        if (canPause)
            return @"&#xE769;";
        // "play"
        return "&#xE102;";
    }

...来自按钮样式:

<Style x:Name="transportStyle"  TargetType="Button">
       <!-- <Setter Property="FontFamily" Value="Segoe MDL2 Assets" />-->
</Style>

禁用Setter属性后,该按钮显示预期值

&#xE102;

,直接设置为按钮内容,显示播放符号。

为什么这不起作用的任何想法?

编辑:从字符表中复制字符并返回它确实有效。

1 个答案:

答案 0 :(得分:11)

\uE102是XML中的unicode字符转义序列(因此也在XAML中)。在C#中,它被写为public object Convert(object value, Type targetType, object parameter, string language) { return (bool)value ? "\uE769" : "\uE102"; }

因此转换器应返回具有正确link的字符串(或字符):

{{1}}