是否有可能在Xaml中有一个静态的样式列表?

本文关键字:样式 列表 静态 有一个 有可能 Xaml 是否 | 更新日期: 2023-09-27 18:15:08

我想在Xaml中有一个Styles的静态列表

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

<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

是否有可能在Xaml中有一个静态的样式列表?

你可以把你的样式放到ResourceDictionary (Add -> New Item -> Resource Dictionary):

<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;

想到的另一个想法

创建一个标准的Xamarin.Forms.Solution用你的样式标记应用程序XAML实例化它并序列化应用程序。转换为XML的资源回到MVVMCross应用程序,在加载时对其进行反序列化,并将其分配给construction或Application.Current.Resources处的每个页面。一旦你有了XML的格式,你就可以直接编辑它,它就可以从一个项目移植到另一个项目。基本上,Xamarin Forms的css样式表(XML格式)可能会很有趣。