Autor Beitrag
numb
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 03.02.09 15:14 
Hallo zusammen,

folgendendes Problem:

Ich habe eine kleine Applikation geschrieben und habe nun begonnen eine passende GUI dazu zu erstellen.(WPF/XAML)
Diese GUI soll ähnlich dem Windows Explorer sein.
Ich habe nun ein Gridlayout mit 2 Spalten erstellt, welches ich mit einem Gridsplitter vertical teile um die Spaltengröße zur Laufzeit variieren zu können.
Auf der linken Seite (Grid.Colum="0") habe ich ein Treeview erstellt.
Auf der rechtes Seite des Grids soll nun je nach selektiertem Item im Treeview der passende Inhalt (diverese UserControls) erscheinen.

Hat jemand vielleicht einen Vorschlag wie ich das bewerkstelligen kann?


Vielen Dank,

Michi
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 03.02.09 18:05 
:welcome:

Nun, der direkte Weg sieht nicht viel anders als bei WinForms aus: Im SelectionChanged des TreeViews erstellst du per Code die rechte Seite (bzw. einfach ein UserControl, das die Seite zusammenfasst).
Deutlich schöner funktioniert das ganze aber, wenn du die rechte Seite an SelectedItem bindest und mit DataTemplates arbeitest. Das läuft dann auf das MVVM-Pattern hinaus, über das es einen schönen Artikel im MSDN Magazine gab: msdn.microsoft.com/e...gazine/dd419663.aspx. Einigermaßen fit in der Materie sollte man aber sein.

_________________
>λ=
numb Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 03.02.09 21:45 
Hallo nochmals,

erstmal vielen Dank für Deine Anwort.

Habe zuvor vergessen zu erwähnen das ich noch neu auf diesem Sektor bin!
Daher bin ich noch nicht so richtig schlau aus Deiner Antwort geworden.

Wie kann ich der rechten Seite des Grids bekannt geben dass es das usercontrol anzeigen soll, nachdem ich auf ein TreeViewItem geklickt habe.
Mach ich das in nem Event? Oder kann ich das direkt im XAML deffinieren?

Paste hier mal den XAML Code (Versuch!!) hinein, vielleicht habe ich ja schon grundlegende Fehler gemacht...

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
<Window x:Class="Patienten_Verwaltung_Wpf.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:uc_patient="clr-namespace:Patienten_Verwaltung_Wpf"
    Title="MainWindow" Height="530" Width="842" Background="LightGray">
    <Window.Resources>
        <uc_patient:Patienten x:Name="uc_patientenN" x:Key="uc_patientenK"/>
    </Window.Resources>
    
    <Grid Name="_g_maingrid" Height="459" Width="763">
        
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"></ColumnDefinition>
            <ColumnDefinition Width="663"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        
        <TreeView Grid.Column="0" Name="_treeview" BorderBrush="Gray" BorderThickness="2,2,1,1">
            <TreeViewItem     Header="Verwaltung" Name="_tvi_verwaltung"   FontWeight="Bold">
                <TreeViewItem Header="Patienten"  Name="_tvi_p_verwaltung" FontWeight="Normal" MouseDown="_p_verwaltung_MouseDown" />
                <TreeViewItem Header="Medikamente"  Name="_tvi_m_verwaltung" FontWeight="Normal"/>
            </TreeViewItem>
            <TreeViewItem Header="Termine" Name="_tvi_termine" FontWeight="Bold"></TreeViewItem>
         </TreeView>
        
        <GridSplitter HorizontalAlignment="Right"  Name="_gs_maingridsplitter"  Width="2" Background="Gray" />
        
    </Grid>
</Window>



Schon mal besten Dank im voraus.

Lg

ps. Der MouseDown Event reagiert nur auf die rechte Maustaste ?

Moderiert von user profile iconUGrohne: Beitragsformatierung überarbeitet.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 04.02.09 14:13 
user profile iconnumb hat folgendes geschrieben Zum zitierten Posting springen:
Mach ich das in nem Event?
Ja, wie gesagt im C#-Code. Ich würde in XAML ein ContentControl für die rechte Seite definieren, im Code kannst du dann das jeweils passende UserControl erstellen und es der Content-Property zuweisen.

Eines kann ich aber nur immer wieder sagen: WPF würde ich auf jeden Fall mit einem anständigen Buch lernen, z.B. "WPF Unleashed" von Adam Nathan.

user profile iconnumb hat folgendes geschrieben Zum zitierten Posting springen:
ps. Der MouseDown Event reagiert nur auf die rechte Maustaste ?
Ja, die linke Maustaste wird vom TreeView verarbeitet und verschluckt. Deswegen SelectionChanged.

_________________
>λ=