myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und XAML » Wie mehrere Views an ein TabControl binden?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie mehrere Views an ein TabControl binden?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
GeneVorph GeneVorph ist männlich
myCSharp.de-Mitglied

Dabei seit: 09.02.2015
Beiträge: 113
Entwicklungsumgebung: Visual Studio 2013


GeneVorph ist offline

Wie mehrere Views an ein TabControl binden?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Guten Abend,

ich versuche mehrere Views an ein TabControl zu binden.
Ich möchte meine Views und die zugehörigen ViewModels unter TabControl.Resources implementieren:

XML-Code:
<TabControl TabStripPlacement="Left" ItemsSource="{Binding ManagerViewModels}"  SelectedIndex="0">

            <TabControl.Resources>

                <DataTemplate x:Key="ShowOverview" DataType="{x:Type viewModels:OverviewViewModel}">
                    <views:OverviewView/>
                </DataTemplate>

                <DataTemplate x:Key="ShowSchoolClass" DataType="{x:Type viewModels:SchoolClassViewModel}">
                    <views:SchoolClassView/>
                </DataTemplate>

                <DataTemplate x:Key="ShowGradeCalculator" DataType="{x:Type viewModels:GradeCalculatorViewModel}">
                    <views:GradeCalculatorView/>
                </DataTemplate>

            </TabControl.Resources>

            <TabControl.ItemContainerStyle>
                <Style TargetType="{x:Type TabItem}">
                    <Setter Property="Header" Value="{Binding VMLabel}" />

                </Style>
            </TabControl.ItemContainerStyle>

        </TabControl>

Alle ViewModels sind gleich aufgebaut und enthalten derzeit lediglich ein string Property

C#-Code:
public class OverviewViewModel
    {
        public string VMLabel { get; set; }

        /// <summary>
        /// Constructor of the OverviewViewModel-Class
        /// </summary>
        public OverviewViewModel()
        {
            VMLabel = "Übersicht";
        }

    }

Problem: Wenn ich meine App starte, zeigen die Header des TabControl erwartungsgemäß den im jeweiligen ViewModel für VMLabel hinterlegten string. Aber für die Views im Content-Bereich bekomme ich lediglich einen string wie z. B.:
"StudentManager:ViewModels.OverviewViewModel° --> s. angehängter Screenshot

Die Views sind verschiedene UserControls, die derzeit nur mit einem Grid gefüllt sind, dessen Hintergrundfarbe ich verändert habe. Beispiel:

XML-Code:
<UserControl x:Class="StudentManager.Views.CertificatesView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            ...
             d:DesignHeight="450" d:DesignWidth="800"
>
    <Grid Background="Purple">
    </Grid>
</UserControl>

Wenn ich die einzelnen Tabs aktiviere, sollte ich dann nicht statt der Pfadangabe die jeweilige Hintergundfarbe des Grids des entsprechenden UserControls sehen?

Hier ist noch mein MainWindowViewModel

XML-Code:
public class MainWindowViewModel : NotifyPropertyChangedBase
    {
        public ObservableCollection<object> ManagerViewModels { get; set; }

        public MainWindowViewModel()
        {
            ManagerViewModels = new ObservableCollection<object>
            {
                new OverviewViewModel(),
                new SchoolClassViewModel(),
                new GradeCalculatorViewModel(),
                new CertificateViewModel(),
                new SettingsViewModel()
            };
        }
    }

Vielen Dank,
Gruß
Vorph

GeneVorph hat dieses Bild (verkleinerte Version) angehängt:
screenshot1.png
Volle Bildgröße

Neuer Beitrag 11.02.2020 22:06 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Palladin007 Palladin007 ist männlich
myCSharp.de-Mitglied

Dabei seit: 03.02.2012
Beiträge: 1.217
Entwicklungsumgebung: Visual Studio 2017
Herkunft: NRW


Palladin007 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Bei den Resource-Einträgen, lass da Mal den Key weg.
Neuer Beitrag 11.02.2020 22:14 Beiträge des Benutzers | zu Buddylist hinzufügen
GeneVorph GeneVorph ist männlich
myCSharp.de-Mitglied

Dabei seit: 09.02.2015
Beiträge: 113
Entwicklungsumgebung: Visual Studio 2013

Themenstarter Thema begonnen von GeneVorph

GeneVorph ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Vielen Dank, Palladin007 - genau das war das Problem (Facepalm)!
Kaum macht man's richtig - schon funktioniert's!

Gruß
Vorph
Neuer Beitrag 12.02.2020 16:35 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 19.02.2020 15:07