我正在尝试将样式分成多个ResourceDictionary文件。根据文档,我应该创建一个内容视图或内容页面,并将其更改为从ResourceDictionary继承。
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/resource-dictionaries
要创建这样的文件,请将新的“内容视图”或“内容页面”项添加到项目中(而不是仅包含C#文件的“内容视图”或“内容页面”)。在XAML文件和C#文件中,将基类的名称从ContentView或ContentPage更改为ResourceDictionary。在XAML文件中,基类的名称是顶级元素。
我遇到了编译错误:
无法从MyApp1.Themes.RedTheme转换为Xamarin.Forms.Element
App.xaml
<Application.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries>
<themes:ThemeBlue></themes:ThemeBlue>
<themes:ThemeRed></themes:ThemeRed>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
RedTheme.xaml
<ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyApp1.Themes.RedTheme"
x:Name="redtheme">
<Style TargetType="Label">
<Setter Property="TextColor" Value="Black"></Setter>
</Style>
</ResourceDictionary>
RedTheme.xaml.cs
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class RedTheme : ResourceDictionary
{
public RedTheme()
{
InitializeComponent ();
}
}
这在Visual Studio中不起作用吗?在Visual Studio中的“添加新文件”菜单中也没有ResouceDictionary模板。
答案 0 :(得分:1)
可以使用XML文件模板:
添加新项>已安装> Visual C#项>数据> XML文件
App.xaml merged ResourceDictionary
in Xamarin.Forms 3.0:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyResourceDictionary.xaml" />
...
MyResourceDictionary.xaml,不需要.xaml.cs
:
<?xml version="1.0" encoding="utf-8" ?>
<ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
...
</ResourceDictionary>
答案 1 :(得分:0)
您忘记在样式中添加 x:key。这就是为什么您会收到该异常。