Xaml 绑定后返回Segoe MDL2图标的转换器不工作

Xaml 绑定后返回Segoe MDL2图标的转换器不工作,xaml,data-binding,Xaml,Data Binding,我正在尝试将PlayerFramework.MediaPlayer.CanPause属性绑定到windows 10通用应用程序中的按钮。这可以使用默认字体工作,但是当我切换到Segoe MDL2以获取那些花哨的图标时,按钮会显示垃圾 <mmppf:MediaPlayer x:Name="mediaElement"> ... <Button Name="btnPlay" Style="{StaticResource transportStyle}" Con

我正在尝试将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}}"/>
…这来自按钮样式:

<Style x:Name="transportStyle"  TargetType="Button">
       <!-- <Setter Property="FontFamily" Value="Segoe MDL2 Assets" />-->
</Style>
直接设置为按钮内容,显示播放符号

你知道为什么这样不行吗


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

您必须返回字符而不是字符串:

public object Convert(object value, Type targetType, object parameter, string language)
    {
        bool canPause = (bool)value;
        if (canPause)
            return '\xE769';
        // "play"
        return '\xE102';
    }
和#xE102
是XML中的unicode字符转义序列(因此在XAML中也是如此)。在C语言中,它写为
\uE102

因此,转换器应返回具有适当的以下内容的字符串(或字符):


“必须返回字符而不是字符串”不是true。问题不在于它是字符串还是字符,而在于unicode转义序列在C#中的编写方式。而
和#xE102
是XML(或XAML),它是C#中的
\uE102
,而不管它是在字符串中还是在单个字符中。转换器也可以返回
“\uE102”
。另见。
&#xE102;
public object Convert(object value, Type targetType, object parameter, string language)
    {
        bool canPause = (bool)value;
        if (canPause)
            return '\xE769';
        // "play"
        return '\xE102';
    }
public object Convert(object value, Type targetType, object parameter, string language)
{
    return (bool)value ? "\uE769" : "\uE102";
}