Warm tip: This article is reproduced from serverfault.com, please click

xamarin-有没有一种方法可以消除对App.Xaml的需要,并可以将资源添加到App.Xaml.cs?

(xamarin - Is there a way I can remove the need to have an App.Xaml and add resources to App.Xaml.cs?)

发布于 2020-11-28 15:49:07

我想将其移至我的App.Xaml.cs。有人可以给我一些建议我该怎么做吗?

<Application
    x:Class="Test.App"
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:converters="clr-namespace:Test">
    <Application.Resources>
        <converters:InverseBool x:Key="InverseBool" />
        <converters:ToUpper x:Key="ToUpper" />
        <converters:BoolToStringStateConverter x:Key="BoolToStringStateConverter" />
        <converters:AddHashToNumberConverter x:Key="AddHashToNumberConverter" />
        <converters:BoolToIntRowSpanConverter x:Key="BoolToIntRowSpanConverter" />
        <converters:StringToTextAligmentConverter x:Key="StringToTextAligmentConverter" />
        <converters:BoolToStringTextConverter x:Key="BoolToStringTextConverter" />
        <converters:BoolToStringTextForDeckSourcesConverter x:Key="BoolToStringTextForDeckSourcesConverter" />
        <converters:EpochSecondsToDateStringConverter x:Key="EpochSecondsToDateStringConverter" />
        <converters:IntervalToDaysConverter x:Key="IntervalToDaysConverter" />
        <converters:BoolToBackgroundColorConverter x:Key="BoolToBackgroundColorConverter" />
    </Application.Resources>
</Application>

有没有一种方法可以将其添加到App.xaml.cs中,而不是将其存储在XAML文件中?

Questioner
iamsophia
Viewed
0
Brandon Minnick 2020-12-02 04:53:08

以下是删除App.xaml,替换为App.cs并将转换器资源添加到的步骤Application.Resources

资源字典Application.Resources只是一个Dictionary<string, object>我们可以传递任何键值对的字典因此,我们将IValueConverter使用类的名称和类的实例来传递每个值,例如Application.Current.Resources.Add(nameof(InverseBool), new InverseBool());

1.删​​除 App.xaml

  1. 在解决方案资源管理器中,右键单击 App.xaml
  2. 在右键单击下拉菜单中,单击“删除”。

在此处输入图片说明

2.添加 App.cs

  1. 在解决方案资源管理器中,右键单击包含你的Xamarin.Forms UI的.NET Standard Project。
  2. 在右键单击下拉菜单中,选择添加>新建文件。

在此处输入图片说明

  1. 在“新建文件”窗口的左侧窗格中,选择“常规”
  2. 在“新建文件”窗口的中央窗格中,选择“空类”
  3. 在“新建文件”窗口的底部“名称”文本框中,输入App
  4. 在“新建文件”窗口中,单击“新建”。

在此处输入图片说明

3.将资源添加到App.cs

  1. 在解决方案资源管理器中,打开 App.cs
  2. App.cs中,通过输入以下代码来添加转换器资源:
public class App : Application
{
    public App()
    {
        Resources.Add(nameof(InverseBool), new InverseBool());
        Resources.Add(nameof(ToUpper), new ToUpper());
        Resources.Add(nameof(BoolToStringStateConverter), new BoolToStringStateConverter());
        Resources.Add(nameof(AddHashToNumberConverter), new AddHashToNumberConverter());
        Resources.Add(nameof(BoolToIntRowSpanConverter), new BoolToIntRowSpanConverter());
        Resources.Add(nameof(StringToTextAligmentConverter), new StringToTextAligmentConverter());
        Resources.Add(nameof(BoolToStringTextConverter), new BoolToStringTextConverter());
        Resources.Add(nameof(BoolToStringTextForDeckSourcesConverter), new BoolToStringTextForDeckSourcesConverter());
        Resources.Add(nameof(EpochSecondsToDateStringConverter), new EpochSecondsToDateStringConverter());
        Resources.Add(nameof(IntervalToDaysConverter), new IntervalToDaysConverter());
        Resources.Add(nameof(BoolToBackgroundColorConverter), new BoolToBackgroundColorConverter());

        MainPage = ...
    }
}