Maison > développement back-end > C++ > Comment lier un TabControl à une collection de ViewModels à l'aide de la liaison de données MVVM ?

Comment lier un TabControl à une collection de ViewModels à l'aide de la liaison de données MVVM ?

DDD
Libérer: 2025-01-14 08:50:42
original
239 Les gens l'ont consulté

How to Bind a TabControl to a Collection of ViewModels using MVVM Data Binding?

Liaison de données MVVM : utilisez la collection ViewModel pour lier TabControl

Dans l'architecture MVVM (Model-View-ViewModel), ViewModel ne doit pas créer directement d'éléments d'interface utilisateur. Au lieu de cela, il doit exposer le modèle de données et fournir des liaisons pour les vues. Pour lier un TabControl à une collection ViewModel, une approche différente est requise.

Créer une maquette de page à onglet

Implémentez une classe de modèle qui représente chaque page à onglet, y compris les propriétés du titre et du contenu. Par exemple :

<code class="language-csharp">public sealed class TabItem
{
    public string Header { get; set; }
    public string Content { get; set; }
}</code>
Copier après la connexion

ViewModel contenant ObservableCollection

Créez une propriété ViewModel pour l'ObservableCollection des objets TabItem. Dans le constructeur, remplissez cette collection avec les onglets initiaux :

<code class="language-csharp">public sealed class ViewModel
{
    public ObservableCollection<TabItem> Tabs { get; set; }
    public ViewModel()
    {
        Tabs = new ObservableCollection<TabItem>();
        Tabs.Add(new TabItem { Header = "One", Content = "One's content" });
        Tabs.Add(new TabItem { Header = "Two", Content = "Two's content" });
    }
}</code>
Copier après la connexion

Liaison en XAML

Dans la fenêtre XAML, définissez ItemsSource du TabControl sur la propriété Tabs dans le ViewModel :

<code class="language-xml"><Window ... x:Class="WpfApplication12.MainWindow">
    <Window.DataContext>
        <viewmodel:ViewModel xmlns:viewmodel="clr-namespace:WpfApplication12"/>
    </Window.DataContext>
    <TabControl ... ItemsSource="{Binding Tabs}"/>
</Window></code>
Copier après la connexion

Modèle de données pour le contenu des onglets

Pour afficher un contenu différent dans chaque onglet, utilisez le modèle de données de la propriété ContentTemplate du TabControl :

<code class="language-xml"><TabControl ...>
    <TabControl.ItemTemplate>
        <DataTemplate>
            ...
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <myusercontrol:MyUserControl xmlns:myusercontrol="clr-namespace:WpfApplication12"/>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl></code>
Copier après la connexion

Avec cette approche, vous pouvez créer dynamiquement un TabControl et le lier à une collection ViewModel tout en conservant les principes MVVM.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal