#xamarin #xamarin.forms
#xamarin #xamarin.forms
Вопрос:
Я хотел бы перенести это в свой 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?
Комментарии:
1. forums.xamarin.com/discussion/98052/…
2. Привет, извините, что не понимаю, зачем нужно перемещать код из
Xaml
.cs
в. Иногда нам не нужноApplication.Resources
их добавлять, просто добавьте их, в которых Xaml должен их использовать.
Ответ №1:
Вот шаги по удалению App.xaml
, замене App.cs
и добавлению ресурсов вашего конвертера Application.Resources
.
Словарь ресурсов, Application.Resources
, — это просто a Dictionary<string, object>
, в который мы можем передать любую пару ключ-значение. Итак, мы передадим каждый IValueConverter
из них, используя имя класса и экземпляр класса, например Application.Current.Resources.Add(nameof(InverseBool), new InverseBool());
1. Удалить App.xaml
- В обозревателе решений щелкните правой кнопкой мыши
App.xaml
- В раскрывающемся меню правой кнопкой мыши выберите Удалить
2. Добавить App.cs
- В обозревателе решений щелкните правой кнопкой мыши на проекте .NET Standard, содержащем ваш Xamarin.Формы пользовательского интерфейса
- В раскрывающемся меню правой кнопки мыши выберите Добавить> Новый файл
- В окне «Новый файл» на левой панели выберите «Общие»
- В окне «Новый файл» на центральной панели выберите Пустой класс
- В окне «Новый файл» в нижнем текстовом поле «Имя» введите App
- В окне «Новый файл» нажмите «Создать»
3. Добавьте ресурсы в App.cs
- В обозревателе решений откройте
App.cs
- В 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 = ...
}
}
Ответ №2:
Если цель состоит в том, чтобы поддерживать App.xaml
чистоту, вы можете использовать объединенный словарь (и это лучшая практика) и разделить все свои ресурсы на его собственный файл словаря, а затем использовать объединенный словарь для их объединения App.xaml
.
Если цель состоит в том, чтобы определить ресурсы в .cs вместо .xaml, тогда вы можете получить доступ к этому словарю прямо из App.cs
this.Resources
словаря via .
Комментарии:
1. Моя цель — полностью удалить .xaml. Я надеюсь, что кто-нибудь сможет показать мне, как это сделать.