Einzelnen Beitrag anzeigen

Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

AW: TreeView als Navigation nutzen - Welche Herangehensweise bei WPF?

  Alt 9. Okt 2010, 18:21
Fangen wir mal mit der ViewModel-Ebene an: In einem zentralen VM (ob MainVM oder NavigationBarVM oder vielleicht sogar beide doch lieber in einer Klasse ist eher Geschmackssache) bräuchten wir erst einmal das VM, das dann rechts angezeigt werden soll:
Code:
public ContentViewModel SelectedContent { get; set; }
Dabei habe ich zur Übersicht eine Basisklasse für alle entsprechenden VMs eingeführt, auch wenn sie wahrscheinlich gar keinen Code enthalten wird.
Diese Property können wir sofort binden:
Code:
<ContentPresenter Content="{Binding SelectedContent}" />
Da aber ein DataTemplate kaum für alle ContentVMs passen wird, geben wir es nicht explizit an, sondern benutzen Implicit Data Templates:
Code:
<DataTemplate DataType="{x:Type vm:SomeContentViewModel}">
    <view:SomeContentView />
</DataTemplate>
Das muss entweder in die Ressourcen der gleichen XAML-Datei oder in App.xaml. Einfache Templates könntest du auch direkt darin deklarieren, aber der Übersichtlichkeit halber sind UserControls sicher keine schlechte Idee .

TreeView+MVVM ist grundsätzlich klar? Kurz skizziert braucht jedes VM eines TreeViewItems eine Eigenschaft
Code:
ContentViewModel Content { get; private set; }
Dann kannst du die beiden verbinden:
Code:
<TreeView SelectedValue="{Binding SelectedContent}" SelectedValuePath="Content" />
Edit: WTF, warum ist das XML-Code-Tag inline ? Das muss ich wohl mal nachlesen. Erledigt, ich bleib wohl erstmal bei den schmucklosen Dingern .
Sebastian
Moderator in der EE

Geändert von Khabarakh ( 9. Okt 2010 um 18:37 Uhr)
  Mit Zitat antworten Zitat