В моей проблеме участвуют три класса. PopupView, CardView и TestPopup. PopupView представляет собой базовый класс для всплывающих окон и использует CardView для линейного отображения 3 ContentView с телом заголовка и нижним колонтитулом. TestPopup наследует PopupView, который сам предоставляет свойство Body, которое устанавливает свойство CardView Body вместе с последним.
Обратите внимание, что PopupView и CardView находятся в отдельной библиотеке классов, это имеет значение, потому что, если я определите TestPopup в библиотеке классов, все работает нормально. Итак, на данный момент я думаю, что либо я делаю что-то ужасно неправильно, либо в MAUI, возможно, кто-то знает ошибку.
Вот код:
PopupText.xaml
PopupTest.Xaml.cs
public partial class PopupTest : PopupView
{
public PopupTest()
{
InitializeComponent();
}
}
PopupView (предоставляется только соответствующий код)
public partial class PopupView : PopupBase
{
public PopupView()
{
InitializeComponent();
}
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
if (width != -1 && height != -1)
{
//-->>>>>>>>>>>> Here cardView is null. bodyContentView however is not null.
cardView.WidthRequest = width * TimerToolkitConfig.PopupPageWidthRatio;
cardView.MinimumHeightRequest = TimerToolkitConfig.ConfirmationPopupContentHeight;
cardView.MaximumHeightRequest = height * TimerToolkitConfig.PopupPageHeightRatioMax;
bodyContentView.Content = Body;
}
}
}
PopupView.xaml:
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Name="popupView"
>
PopupBase (PopupPage взят из Nuget Moups):
public abstract class PopupBase : PopupPage
{
protected TaskCompletionSource
? _taskCompletionSource;
protected PopupResult ReturnValue { get; set; } = new PopupResult();
public Task PopupDismissedTask => _taskCompletionSource != null ? _taskCompletionSource!.Task : new TaskCompletionSource().Task;
public PopupBase()
{
CloseWhenBackgroundIsClicked = false;
BackgroundClicked += PopupBase_BackgroundClicked;
}
protected virtual async Task Dismiss(bool cancelled = false)
{
ReturnValue.Cancelled = cancelled;
await MopupService.Instance.PopAsync();
}
private async void PopupBase_BackgroundClicked(object? sender, EventArgs e)
{
await Dismiss(true);
}
protected override void OnAppearing()
{
base.OnAppearing();
_taskCompletionSource = new TaskCompletionSource();
}
protected override void OnDisappearing()
{
base.OnDisappearing();
if (_taskCompletionSource != null)
{
_taskCompletionSource!.SetResult(ReturnValue);
}
}
}
public sealed class PopupResult
{
public object? ReturnValue { get; set; }
public bool Cancelled { get; set; }
}
CardView.xaml.cs:
public partial class CardView : ContentView
{
public static readonly BindableProperty HeaderProperty = BindableProperty.Create(nameof(Header), typeof(View), typeof(CardView));
public View Header
{
get => (View)GetValue(HeaderProperty);
set => SetValue(HeaderProperty, value);
}
public static readonly BindableProperty BodyProperty = BindableProperty.Create(nameof(Body), typeof(View), typeof(CardView));
public View Body
{
get => (View)GetValue(BodyProperty);
set => SetValue(BodyProperty, value);
}
public static readonly BindableProperty FooterProperty = BindableProperty.Create(nameof(Footer), typeof(View), typeof(CardView));
public View Footer
{
get => (View)GetValue(FooterProperty);
set => SetValue(FooterProperty, value);
}
public CardView()
{
InitializeComponent();
}
}
CardView.xaml:
Здесь, когда я пытаюсь получить доступ к элементу из представления в коде программной части, один из них имеет значение null. Это «картВью». «bodyContentView», который является дочерним элементом «cardView», не имеет значения NULL. Как это вообще возможно ? Будем очень признательны за любую информацию по этому поводу. Честно говоря, я понятия не имею, как это может произойти.
РЕДАКТИРОВАТЬ: этот код определен в PopupView.xaml.cs и не был включен в исходное сообщение< /p>
public static readonly BindableProperty BodyProperty = BindableProperty.Create(nameof(Body), typeof(View), typeof(PopupView));
public View Body
{
get => (View)GetValue(BodyProperty);
set => SetValue(BodyProperty, value);
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... alized-why
Элемент представления, доступ к которому осуществляется в коде программной части, имеет значение null, когда его следует ⇐ C#
Место общения программистов C#
1716349524
Anonymous
В моей проблеме участвуют три класса. PopupView, CardView и TestPopup. PopupView представляет собой базовый класс для всплывающих окон и использует CardView для линейного отображения 3 ContentView с телом заголовка и нижним колонтитулом. TestPopup наследует PopupView, который сам предоставляет свойство Body, которое устанавливает свойство CardView Body вместе с последним.
Обратите внимание, что PopupView и CardView находятся в отдельной библиотеке классов, это имеет значение, потому что, если я определите TestPopup в библиотеке классов, все работает нормально. Итак, на данный момент я думаю, что либо я делаю что-то ужасно неправильно, либо в MAUI, возможно, кто-то знает ошибку.
Вот код:
PopupText.xaml
PopupTest.Xaml.cs
public partial class PopupTest : PopupView
{
public PopupTest()
{
InitializeComponent();
}
}
PopupView (предоставляется только соответствующий код)
public partial class PopupView : PopupBase
{
public PopupView()
{
InitializeComponent();
}
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
if (width != -1 && height != -1)
{
//-->>>>>>>>>>>> Here cardView is null. bodyContentView however is not null.
cardView.WidthRequest = width * TimerToolkitConfig.PopupPageWidthRatio;
cardView.MinimumHeightRequest = TimerToolkitConfig.ConfirmationPopupContentHeight;
cardView.MaximumHeightRequest = height * TimerToolkitConfig.PopupPageHeightRatioMax;
bodyContentView.Content = Body;
}
}
}
PopupView.xaml:
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Name="popupView"
>
PopupBase (PopupPage взят из Nuget Moups):
public abstract class PopupBase : PopupPage
{
protected TaskCompletionSource
? _taskCompletionSource;
protected PopupResult ReturnValue { get; set; } = new PopupResult();
public Task PopupDismissedTask => _taskCompletionSource != null ? _taskCompletionSource!.Task : new TaskCompletionSource().Task;
public PopupBase()
{
CloseWhenBackgroundIsClicked = false;
BackgroundClicked += PopupBase_BackgroundClicked;
}
protected virtual async Task Dismiss(bool cancelled = false)
{
ReturnValue.Cancelled = cancelled;
await MopupService.Instance.PopAsync();
}
private async void PopupBase_BackgroundClicked(object? sender, EventArgs e)
{
await Dismiss(true);
}
protected override void OnAppearing()
{
base.OnAppearing();
_taskCompletionSource = new TaskCompletionSource();
}
protected override void OnDisappearing()
{
base.OnDisappearing();
if (_taskCompletionSource != null)
{
_taskCompletionSource!.SetResult(ReturnValue);
}
}
}
public sealed class PopupResult
{
public object? ReturnValue { get; set; }
public bool Cancelled { get; set; }
}
CardView.xaml.cs:
public partial class CardView : ContentView
{
public static readonly BindableProperty HeaderProperty = BindableProperty.Create(nameof(Header), typeof(View), typeof(CardView));
public View Header
{
get => (View)GetValue(HeaderProperty);
set => SetValue(HeaderProperty, value);
}
public static readonly BindableProperty BodyProperty = BindableProperty.Create(nameof(Body), typeof(View), typeof(CardView));
public View Body
{
get => (View)GetValue(BodyProperty);
set => SetValue(BodyProperty, value);
}
public static readonly BindableProperty FooterProperty = BindableProperty.Create(nameof(Footer), typeof(View), typeof(CardView));
public View Footer
{
get => (View)GetValue(FooterProperty);
set => SetValue(FooterProperty, value);
}
public CardView()
{
InitializeComponent();
}
}
CardView.xaml:
Здесь, когда я пытаюсь получить доступ к элементу из представления в коде программной части, один из них имеет значение null. Это «картВью». «bodyContentView», который является дочерним элементом «cardView», не имеет значения NULL. Как это вообще возможно ? Будем очень признательны за любую информацию по этому поводу. Честно говоря, я понятия не имею, как это может произойти.
РЕДАКТИРОВАТЬ: этот код определен в PopupView.xaml.cs и не был включен в исходное сообщение< /p>
public static readonly BindableProperty BodyProperty = BindableProperty.Create(nameof(Body), typeof(View), typeof(PopupView));
public View Body
{
get => (View)GetValue(BodyProperty);
set => SetValue(BodyProperty, value);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78510349/view-element-accessed-in-code-behind-is-null-when-it-should-be-initialized-why[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия