Ponowne otworzenie okna WPF

0

Cześć,

            this.Content = new UserControl1();
            this.ShowDialog();
            // = new MainWindow()?
            this.Content = new UserControl2();
            this.ShowDialog();

Mam okienko WPF i w nim do kontekstu przypisuje sobie jakiś UserControl1. Okienko otwiera się, mogę zamknąć i program przesuwa się dalej wzdłuż kodu. Jednak pojawia się error.
Podejrzewam że pierwsze okienko umarło i trzeba je jakoś od nowa stworzyć. Jak to zrobić?
error: WindowInteropHelper.EnsureHandle after a Window has closed.'

0

Znalazłem:

MainWindow mw = new MainWindow();
this.Owner = this;

nie wiem na ile jest to poprawne.
Od razu chciałbym zapytać się jeżeli tutaj ktoś siedzi w mvvm i wpf. Chce dorobić GUI do pewnego algorytmu. Chciałbym zrobić to porządnie. Myślałem o jednym projekcie Client typu WPF oraz innych projektach w formie Libs zawierających User Control. I by wywoływać w Client te konteksty i retworzyć. Dobra koncepcja? Jestem na etapie planowania później ciężej zmieniać.

Pozdrawiam
wonman

1

Co chcesz konkretnie osiągnąć?

0

Posiadam gotowy przykład do wiązania mvvm w 1 projektowy WPF application.
Myśląc o rozbudowie struktury, podmianie łatwych DLL chciałem mieć 1 projekt Client oraz reszte DLL.
Client posiada główną WPF aplikacje Okno MainWindow.xaml oraz SharedWindow.xaml, które będzie przyjmować .Context innych User Control z projektów w Solucji.

Stack wątek: https://stackoverflow.com/questions/48142513/binding-user-control-from-second-lib-project-not-work-wpf-mvvm

Binduje w kodzie 3 x TextBoxy np. Text="{Binding XmlFilePath2}"/> oraz Button SayHi.
Używam też do znalezienia VieModelu:

    <UserControl.DataContext>
        <local:MenuViewModel/>
    </UserControl.DataContext>

XAML liba MenuWindow

<UserControl x:Class="MenuWindow.MenuProgram"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:MenuWindow"
             mc:Ignorable="d" 
             d:DesignHeight="550" d:DesignWidth="780">
    <UserControl.DataContext>
        <local:MenuViewModel/>
    </UserControl.DataContext>
    <Grid Background="#FF6F6FA4">
        <Label x:Name="lblTitle" Content="GUI Export Revit Data" HorizontalAlignment="Left" Margin="277,31,0,0" VerticalAlignment="Top" Height="50" Width="258" FontSize="24" FontWeight="Bold"/>
        <Label x:Name="lblPrtdPath" Content="File prtd path" HorizontalAlignment="Left" Margin="200,176,0,0" VerticalAlignment="Top"/>
        <Label x:Name="lblXmlPath1" Content="File xml path1" HorizontalAlignment="Left" Margin="200,222,0,0" VerticalAlignment="Top"/>
        <Label x:Name="lblXmlPath2" Content="File xml path2" HorizontalAlignment="Left" Margin="200,266,0,0" VerticalAlignment="Top"/>
        <TextBox x:Name="tbxPrtd" HorizontalAlignment="Left" Height="23" Margin="302,176,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="268" Text="{Binding PrtdFilePath}"/>
        <TextBox x:Name="tbxXml1" HorizontalAlignment="Left" Height="23" Margin="302,222,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="268" Text="{Binding XmlFilePath1}"/>
        <TextBox x:Name="tbxXml2" HorizontalAlignment="Left" Height="23" Margin="302,266,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="268" Text="{Binding XmlFilePath2}"/>
        <Button x:Name="SayHi" Content="Start" HorizontalAlignment="Left" Margin="302,450,0,0" VerticalAlignment="Top" Width="174" Height="84" FontSize="22" Command="{Binding SayHi}" />
        <Button x:Name="btnAbout" Content="About" HorizontalAlignment="Left" Margin="705,496,0,0" VerticalAlignment="Top" Width="55" Height="38" Command="{Binding SayHi}"/>
    </Grid>
</UserControl>

Podczas kompilacji przechodzi przez Settery i Gettery w ViewModel jednak później podczas klikania nie ma reakcji. Jak to można było by naprawić?

Pozdrawiam
wonman

0

@wonman: Szczerze mówiąc to nie mam pojęcia czy twoje podejście jest dobre, ja bym użył MEF i stworzył jeden projekt SDK i w nim zrobił logikę do dzielonych danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1