无法分配属性“FontFamily”:属性不存在

时间:2018-05-29 14:11:17

标签: xamarin.forms

Xamarin.forms的新风格。我有这个旧的xamarin.forms应用程序,我做了一个调试,我在App.xaml里面的Style下面出现了这个错误

问题:位置39:17。无法分配属性“FontFamily”:属性不存在,或者不可分配,或者值和属性之间的类型不匹配

请帮忙。

    

    <!--  Application resource dictionary  -->
    <ResourceDictionary>
        <!--  colors  -->
        <!--<Color x:Key="HeaderTextColor">#585858</Color>
        <Color x:Key="BodyTextColor">#C3C3C3</Color>-->

        <Color x:Key="TimelineColor">#E4B6C3</Color>
        <Color x:Key="HeaderTextColor">#3C3C3C</Color>
        <Color x:Key="BodyTextColor">#869EAC</Color>
        <Color x:Key="TimeColor">#A64C79</Color>

        <!--  font families  -->
        <OnPlatform
            x:Key="RegularFontFamily"
            x:TypeArguments="x:String"
            Android="sans-serif"
            iOS="HelveticaNeue" />
        <OnPlatform
            x:Key="LightFontFamily"
            x:TypeArguments="x:String"
            Android="sans-serif-light"
            iOS="HelveticaNeue-Light" />
        <OnPlatform
            x:Key="MediumFontFamily"
            x:TypeArguments="x:String"
            Android="sans-serif-medium"
            iOS="HelveticaNeue-Medium" />

        <!--  fonts  -->
        <Font
            x:Key="HeaderFont"
            FontFamily="{StaticResource MediumFontFamily}"
            FontSize="30" />
        <Font
            x:Key="SubHeaderFont"
            FontFamily="{StaticResource MediumFontFamily}"
            FontSize="18" />
        <Font
            x:Key="TitleFont"
            FontFamily="{StaticResource MediumFontFamily}"
            FontSize="20" />
        <Font
            x:Key="BodyFont"
            FontFamily="{StaticResource RegularFontFamily}"
            FontSize="18" />


        <!--  styles  -->
        <Style x:Key="PageHeaderLabel" TargetType="Label">
            <Setter Property="TextColor" Value="{StaticResource HeaderTextColor}" />
            <Setter Property="Font" Value="{StaticResource HeaderFont}" />
        </Style>

        <Style x:Key="SubHeaderLabel" TargetType="Label">
            <Setter Property="TextColor" Value="{StaticResource BodyTextColor}" />
            <Setter Property="Font" Value="{StaticResource SubHeaderFont}" />
        </Style>

        <Style x:Key="ClassTimeLabel" TargetType="Label">
            <Setter Property="TextColor" Value="{StaticResource TimeColor}" />
            <Setter Property="Font" Value="{StaticResource TitleFont}" />
        </Style>

        <Style x:Key="ClassNameLabel" TargetType="Label">
            <Setter Property="TextColor" Value="{StaticResource HeaderTextColor}" />
            <Setter Property="Font" Value="{StaticResource TitleFont}" />
        </Style>

        <Style x:Key="ClassInstructorLabel" TargetType="Label">
            <Setter Property="TextColor" Value="{StaticResource BodyTextColor}" />
            <Setter Property="Font" Value="{StaticResource BodyFont}" />
        </Style>

    </ResourceDictionary>

</Application.Resources>

// ---更新:我改变了这一部分:我仍然有错误

           <ResourceDictionary>

        <Color x:Key="BodyTextColor">#C3C3C3</Color>-->

        <Color x:Key="TimelineColor">#E4B6C3</Color>
        <Color x:Key="HeaderTextColor">#3C3C3C</Color>
        <Color x:Key="BodyTextColor">#869EAC</Color>
        <Color x:Key="TimeColor">#A64C79</Color>

       <OnPlatform
            x:Key="RegularFontFamily"
            x:TypeArguments="x:String"
            Android="sans-serif"
            iOS="HelveticaNeue" />
        <OnPlatform
            x:Key="LightFontFamily"
            x:TypeArguments="x:String"
            Android="sans-serif-light"
            iOS="HelveticaNeue-Light" />
        <OnPlatform
            x:Key="MediumFontFamily"
            x:TypeArguments="x:String"
            Android="sans-serif-medium"
            iOS="HelveticaNeue-Medium" />


        <x:Double x:Key="HeaderFontSize">30</x:Double>
        <x:Double x:Key="SubHeaderFontSize">18</x:Double>
        <x:Double x:Key="BodyFontSize">18</x:Double>
         <x:Double x:Key="TitleFontSize">20</x:Double>



        <Style x:Key="PageHeaderLabel" TargetType="Label">
            <Setter Property="TextColor" Value="{StaticResource HeaderTextColor}" />
            <Setter Property="Font" Value="{StaticResource HeaderFont}" />
            <Setter Property="FontSize" Value="{StaticResource HeaderFontSize}" />
        </Style>

        <Style x:Key="SubHeaderLabel" TargetType="Label">
            <Setter Property="TextColor" Value="{StaticResource BodyTextColor}" />
            <Setter Property="Font" Value="{StaticResource SubHeaderFont}" />
            <Setter Property="FontSize" Value="{StaticResource SubHeaderFontSize}" />
        </Style>

        <Style x:Key="ClassTimeLabel" TargetType="Label">
            <Setter Property="TextColor" Value="{StaticResource TimeColor}" />
            <Setter Property="Font" Value="{StaticResource TitleFont}" />
            <Setter Property="FontSize" Value="{StaticResource TitleFontSize}" />
        </Style>

        <Style x:Key="ClassNameLabel" TargetType="Label">
            <Setter Property="TextColor" Value="{StaticResource HeaderTextColor}" />
            <Setter Property="Font" Value="{StaticResource TitleFont}" />
            <Setter Property="FontSize" Value="{StaticResource TitleFontSize}" />
        </Style>

        <Style x:Key="ClassInstructorLabel" TargetType="Label">
            <Setter Property="TextColor" Value="{StaticResource BodyTextColor}" />
            <Setter Property="Font" Value="{StaticResource BodyFont}" />
            <Setter Property="FontSize" Value="{StaticResource BodyFontSize}" />
        </Style>

        <Style x:Key="TitleFont" TargetType="Label">
           <Setter Property="TextColor" Value="{StaticResource HeaderTextColor}" />
           <Setter Property="Font" Value="{StaticResource MediumFontFamily}" />
          <Setter Property="FontSize" Value="{StaticResource TitleFontSize}" />
       </Style>

    </ResourceDictionary>

</Application.Resources>

2 个答案:

答案 0 :(得分:1)

非常接近,但不是Font使用Double来定义FontSize,例如:

<OnPlatform
    x:Key="MediumFontFamily"
    x:TypeArguments="x:String"
    Android="sans-serif-medium"
    iOS="HelveticaNeue-Medium" />

现在你应该定义具体的尺寸:

<x:Double x:Key="TitleFontSize">20</x:Double>

接下来消耗它:

<Style x:Key="TitleFont" TargetType="Label">
    <Setter Property="TextColor" Value="{StaticResource HeaderTextColor}" />
    <Setter Property="FontFamily" Value="{StaticResource MediumFontFamily}" />
    <Setter Property="FontSize" Value="{StaticResource TitleFontSize}" />
</Style>

答案 1 :(得分:0)

<OnPlatform x:TypeArguments="x:String" x:Key="default-font">
  <On Platform="Android" Value="sans-serif-medium" />
  <On Platform="iOS" Value="sans-serif-medium" />
</OnPlatform>