我的页面看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Japanese;assembly=Japanese" xmlns:template="clr-namespace:Japanese.Templates" xmlns:t="clr-namespace:Japanese.Views.HelpTab.Xaml" x:Class="Japanese.Views.HelpTab.AssignMode" Title="Assign Mode Help" BackgroundColor="{DynamicResource PageBackgroundColor}">
<ContentPage.Content>
<ScrollView>
<StackLayout Spacing="0">
<StackLayout.Resources>
<Style TargetType="Frame" CanCascade="true">
<Setter Property="Style" Value="{StaticResource FrameBorder}" />
</Style>
<Style TargetType="Label" CanCascade="true">
<Setter Property="TextColor" Value="{DynamicResource HelpTextColor}" />
<Setter Property="Style" Value="{StaticResource HD}" />
</Style>
<Style TargetType="Grid" CanCascade="true">
<Setter Property="Style" Value="{StaticResource HG}" />
</Style>
</StackLayout.Resources>
应用程序中大约有二十个页面,所有页面都添加了相同的资源集,但不是每个页面。
有没有一种方法可以在我自己页面的C#后端中添加资源,然后对那20个页面使用enter code here
,所以我需要做的就是这样:
<?xml version="1.0" encoding="UTF-8"?>
<MyContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Japanese;assembly=Japanese" xmlns:template="clr-namespace:Japanese.Templates" xmlns:t="clr-namespace:Japanese.Views.HelpTab.Xaml" x:Class="Japanese.Views.HelpTab.AssignMode" Title="Assign Mode Help" BackgroundColor="{DynamicResource PageBackgroundColor}">
<ContentPage.Content>
<ScrollView>
<StackLayout Spacing="0">
或者有某种方法可以将所有这些资源合并为一个,然后添加而不是添加三种单独的样式?
答案 0 :(得分:1)
当然,您可以在此领域中做几件事,但是我想知道implicit和explicit样式已经对您有很大帮助。
首先转到您的App.xaml
,然后在其中添加样式。您应该已经看到<Application.Resources>
节点。您可以在其中添加<ResourceDictionary>
,然后根据需要定义任何资源或样式。这些将在整个应用程序中提供。
例如,在您的情况下,如下所示:
<Application.Resources>
<ResourceDictionary>
<Style TargetType="Frame" CanCascade="true">
<Setter Property="Style" Value="{StaticResource FrameBorder}" />
</Style>
<Style TargetType="Label" CanCascade="true">
<Setter Property="TextColor" Value="{DynamicResource HelpTextColor}" />
<Setter Property="Style" Value="{StaticResource HD}" />
</Style>
<Style TargetType="Grid" CanCascade="true">
<Setter Property="Style" Value="{StaticResource HG}" />
</Style>
</ResourceDictionary>
</Application.Resources>
因为您指定的是TargetType
而不是x:Key
,所以这是一种隐式样式。它将应用于该目标类型的所有元素。您现在可以做两件事;或创建控件的继承并将样式仅应用于该继承,或创建显式样式。然后,将x:Key="MyStyle"
属性添加到样式中,并将Style="{StaticResource MyStyle}"
添加到要应用样式的每个元素。可以在Microsoft Docs上阅读有关样式的更多信息。
答案 1 :(得分:0)
您可以在App.xaml中定义资源,并使用
在整个项目中使用APEX
如果要在xaml页面中使用,请使用
excel