Laden...

Durch Button neue View öffnen ohne eigenes Fenster

Letzter Beitrag vor 8 Jahren 5 Posts 2.136 Views
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?

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.

~~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)

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.

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>