2015-08-04 3 views
3

Я пытаюсь реализовать эквивалент CSS-стилей XAML. Я хочу создать собственный макет для ContentPage, который я могу использовать на всех страницах своего приложения, и будет иметь другое значение для каждой платформы.Общие ресурсы XAML

В частности, я начинаю с пользовательским дополнением: Я пытаюсь поместить этот код в моем App.xaml файл:

<Application.Resources> 
    <ResourceDictionary> 
     <OnPlatform x:Key="MyPadding" 
      x:TypeArguments="Thickness" 
      iOS="0, 20, 0, 0" 
      Android="0, 0, 0, 0"/> 

     <Style 
      x:Key="labelGreen" 
      TargetType="Entry"> 

      <Setter 
       Property="TextColor" 
       Value="Green"/> 
     </Style> 

    </ResourceDictionary> 
</Application.Resources> 

В отдельном ContentPage, я делаю следующее, но он не работает:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     x:Class="MyApp.LoginScreen" 
     Style="{DynamicResource MyPadding}" 
> 

Таможенный стиль ввода работает отлично. Но прокладка не работает. Я получаю ошибку: «SetValue: невозможно преобразовать Xamarin.Forms.OnPlatform`1 [Xamarin.Forms.Thickness], чтобы ввести« Xamarin.Forms.Style »

Что я делаю неправильно?

ответ

3

Так же, как ошибка говорит, Thickness не является Style. Измените его на:

<Application.Resources> 
    <ResourceDictionary> 
     <OnPlatform x:Key="MyPadding" 
      x:TypeArguments="Thickness" 
      iOS="0, 20, 0, 0" 
      Android="0, 0, 0, 0"/> 

     <Style 
      x:Key="pageStyle" 
      TargetType="ContentPage"> 

      <Setter 
       Property="Padding" 
       Value="{StaticResource MyPadding}"/> 
     </Style> 

     <Style 
      x:Key="labelGreen" 
      TargetType="Entry"> 

      <Setter 
       Property="TextColor" 
       Value="Green"/> 
     </Style> 

    </ResourceDictionary> 
</Application.Resources> 


<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     x:Class="MyApp.LoginScreen" 
     Style="{StaticResource pageStyle}"> 

ИЛИ

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     x:Class="MyApp.LoginScreen" 
     Padding="{StaticResource MyPadding}"> 
+0

работает как шарм. Спасибо! – Bassman

Смежные вопросы