Views

Die Views sind die visuelle Komponente der App und zeigen die Daten aus dem gebundenen ViewModel an. Der Ctor der Inhaltsseite muss als Parameter das ViewModel akzeptieren, wie das folgende Beispiel zeigt. Somit weis die View, welches ViewModel sich dahinter verbirgt. Zusätzlich sollte auch in der Xaml-Ansicht auf das richtige ViewModel verwiesen werden. Dies hat…

Image Description

Die Views sind die visuelle Komponente der App und zeigen die Daten aus dem gebundenen ViewModel an. Der Ctor der Inhaltsseite muss als Parameter das ViewModel akzeptieren, wie das folgende Beispiel zeigt.

public partial class DashboardPage : ContentPage
{
    public DashboardPage(DashboardPageViewModel viewModel)
    {
        InitializeComponent();
        BindingContext = viewModel;
        Loaded += ((DashboardPageViewModel)BindingContext).Pages_Loaded;
    }

    ~DashboardPage()
    {
        Loaded -= ((DashboardPageViewModel)BindingContext).Pages_Loaded;
    }

    #region Methods
    protected override void OnAppearing()
    {
        base.OnAppearing();
        try
        {
            ((DashboardPageViewModel)BindingContext).OnAppearing();
        }
        catch (Exception) { }
    }

    protected override void OnDisappearing()
    {
        base.OnDisappearing();
        try
        {
            ((DashboardPageViewModel)BindingContext).OnDisappearing();
        }
        catch (Exception) { }
    }
    #endregion
}

Somit weis die View, welches ViewModel sich dahinter verbirgt. Zusätzlich sollte auch in der Xaml-Ansicht auf das richtige ViewModel verwiesen werden.

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    x:Class="AppBasement.Views.DashboardPage"
       
    xmlns:localization="clr-namespace:AppBasement.Resources.Localization"
    xmlns:viewModels="clr-namespace:AppBasement.ViewModels"
    
    Title="{x:Static localization:Strings.Dashboard}"
    Style="{StaticResource DefaultPageStyle}"
    x:DataType="viewModels:DashboardPageViewModel"
    >
    <!-- Some content -->
</ContentPage>

Dies hat den Vorteil, dass schon beim Erstellen des Projektes geprüft wird, ob die Bindings der View auch im ViewModel verfügbar sind. Das erleichtert das spätere Fehlersuchen und verbessert die Performance der App.

War dieser Artikel hilfreich für Sie?

Ja Nein

Verwandte Artikel