Laden...

Durch Button neue View öffnen ohne eigenes Fenster

Erstellt von R3turnz vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.053 Views
R
R3turnz Themenstarter:in
125 Beiträge seit 2016
vor 7 Jahren
Durch Button neue View öffnen ohne eigenes Fenster

Hallo,
ich möchte einen Einstellungsbutton erstellen, der ein neues View öffnet, welches das aktuelle Fenster überdeckt und eben nicht ein neues Fenster öffnet. Hierfür würde dann auch ein eigenes Viewmodel Sinn machen. Wie könnte ich das umsetzen?

2.080 Beiträge seit 2012
vor 7 Jahren

Ich denke, ich würde ein "MainViewModel" definieren, was eine Property "Current" besitzt.
Die MainView Bindet daran und je nachdem was da für ein Typ drin steckt, nimmst Du ein anderes Template.
Oder Du missbrauchst das TabControl dafür, musst dann allerdings die Tabs ausblenden.

Oder Du schaust dir MahApps mal an.
Ist kostenlos und mir persönlich gefällts ganz gut.
Da kannst Du Flayouts definieren, denen Du dann Einstellungen verpassen kannst.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

3.003 Beiträge seit 2006
vor 7 Jahren

~~Einfach Window.ShowDialog.

Das VM des neuen Dialogs kannst du zB an der Stelle initialisieren, oder analog zum VM deines Ursprungsfensters erstellen. Template ändern anhand des VM würde ich hier für machbar, aber deutlich overengineered halten.

LaTino~~
EDIT: hm, eigenen Beitrag löschen tut nicht. Streich ich's halt 😉

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

R
25 Beiträge seit 2016
vor 7 Jahren

Hi R3turnz,

ich habe das bei mir so gemacht, dass es eine MainView gibt, die nur eine ContentControl Eigenschaft besitzt und "schalte" dann im ViewModel nur eine Property "CurrentView" um.

N
232 Beiträge seit 2011
vor 7 Jahren

Hi, ich würde ebenfalls ein ContentControl verwenden und die .Content Eigenschaft mit dem jeweiligen ViewModel überschreiben.

ContentControl.Content = new PersonViewModel();

Dafür ist es jedoch noch notwendig das View an das ViewModel zu mappen.

        
<Application.Resources>
  <DataTemplate DataType="{x:Type viewModel:PersonViewModel}">
    <view:PersonView/>
  </DataTemplate>
</Application.Resources>