MAUI: изменение размера всех компонентов представления по умолчанию для работы с экранами разных размеров и плотностей.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 MAUI: изменение размера всех компонентов представления по умолчанию для работы с экранами разных размеров и плотностей.

Сообщение Anonymous »

Я работаю над приложением .NET MAUI, в котором мне нужно по умолчанию применить масштабирование ко всем визуальным элементам для обработки экранов разных размеров и плотностей.
Это потому, что я разработал свой приложение на планшете Android, и когда я использую его на смартфоне Android, размеры всех компонентов остаются слишком большими.
Я знаю, что есть решение с помощью OnIdiom, но оно кажется слишком длинным. решение, подходящее для всех моих страниц на телефоне, а также в некоторых случаях например, слишком маленькие телефоны или слишком большие планшеты, это может работать плохо. В настоящее время я нашел решение, согласно которому применение переменной к каждому компоненту позволяет ему масштабироваться в зависимости от размера и плотности экрана.
Я хочу, чтобы это масштабирование применялось автоматически без необходимости устанавливать свойство каждого элемента управления в XAML. Однако мне нужно убедиться, что явно заданные стили или свойства для отдельных элементов управления переопределяют это масштабирование по умолчанию.
Я пробовал несколько подходов, но ни один из них не решил проблему полностью, особенно при работе с всплывающие окна, шаблоны данных и сторонние элементы управления.
Это моя собственность:

Код: Выделить всё

public static class Scaling
{
public static readonly BindableProperty IsScalingProperty =
BindableProperty.CreateAttached(
"IsScaling",
typeof(bool),
typeof(Scaling),
false,
propertyChanged: OnIsScalingChanged);

public static bool GetIsScaling(BindableObject view)
{
return (bool)view.GetValue(IsScalingProperty);
}

public static void SetIsScaling(BindableObject view, bool value)
{
view.SetValue(IsScalingProperty, value);
}

private static void OnIsScalingChanged(BindableObject bindable, object oldValue, object newValue)
{
if (bindable is View view && newValue is bool isScaling && isScaling && (oldValue == null || !(bool)oldValue))
{
ApplyScaling(view);
}
}

public static void ApplyScaling(View view)
{
EventHandler loadedHandler = null;

loadedHandler = (sender, e) =>
{
ScaleProperties(view);

view.Loaded -= loadedHandler;
};

view.Loaded += loadedHandler;
}
}
И я могу использовать его в XAML следующим образом: Я пробовал много подходов, таких как поведение в app.xaml или определение неявных стилей для каждого элемента, но это очень долго и может быть заменено стилями с явным ключом. Единственное решение, которое я нашел на данный момент, — это вручную определить, где мне нужно это свойство, но было бы удобнее установить для него значение true по умолчанию во всех компонентах.
Класс, который масштабирование, если оно определено вручную, работает правильно, но я не знаю, является ли это лучшим способом масштабирования компонентов мауи в зависимости от размера и плотности экрана.
Спасибо за помощь!< /п>

Подробнее здесь: https://stackoverflow.com/questions/793 ... -sizes-and
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»