是否可以在Xaml中拥有样式的静态列表

时间:2015-09-30 08:32:51

标签: c# list xaml xamarin.forms

我希望在Styles

中有一个Xaml的静态列表

到目前为止,我已经尝试过:

<local:Styles xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:MyApp.Core;assembly=MyApp.Core">
  <Style x:Key="labelStyle" TargetType="Label">
    <Setter Property="TextColor" Value="Green" />
  </Style>
</local:Styles>

代码背后

public partial class Styles : List<Style>
{
    public Styles()
    {
    }
}

但是当我做的时候

var styles = new Styles();

班级是空的。

另外,我无法使用Application ResourcesResourceDictionary

2 个答案:

答案 0 :(得分:1)

您可以将样式放在ResourceDictionary(添加 - >新项目 - &gt;资源词典)中:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <!-- Your styles here -->
    <Style ...

</ResourceDictionary>

不要忘记您需要在App.xaml

中添加对它的引用
<Application x:Class="Your.App.Namespace"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Your.App.Namespace;component/Path/To/Dictionary.xaml"/>
            ...

要在代码隐藏中掌握这些样式,可以使用FindResource方法:

Style myStyle = App.Current.FindResource("MyStyleKey") as Style;

答案 1 :(得分:1)

想到一个额外的想法

创建标准的Xamarin.Forms.Solution 使用您的样式标记应用程序XAML 实例化它并将Application.Resource序列化为XML 返回到MVVMCross应用程序并在加载时反序列化它并将其分配给构造中的每个页面或Application.Current.Resources。一旦你拥有了XML的格式,你就可以直接编辑它,它可以从一个项目移植到另一个项目,基本上一个用于Xamarin Forms的css样式表(xml格式)可能很有趣。