Projekt aplikacji okienkowej WPF, problemy

0

Hej, zaczynam pisanie w C# aplikacji okienkowej do mojego systemu zarządzania (od dziś dosłownie). Korzystam z WPF i większość działań w C# działa fajnie, ale mam problem z przekierowaniem użytkownika do nowego okienka.

Zdarzenie do kliknięcia opcji w menu wygląda tak:

Biblioteki_24_4_2017 biblioteki = new Biblioteki_24_4_2017();
biblioteki.Show();
this.hide()

Klasa w pliku .cs nowego okna, nazwa tegoż pliku atrybut x:class też odpowiada temu.

Mimo to, po wywołaniu przejścia do nowego okna, otwiera się jakieś puste okno, z którym nic nie można zrobić. Jakby aplikacja brała skądś pustą definicję okna.
VS nic nie krzyczy, nie ma żadnych wyjątków ani nic złego. Dlaczego tak się dzieje?

0

za mało kodu, co to jest Biblioteki_24_4_2017?

0

dodaj nowe okno i przekopiuj wszystkie własności i atrybuty do nowego okna i powinno działać ;)

0

To jest klasa okna. Jeśli jest potrzebny cały kod (to znaczy to, czego bezpośrednio używam, to już wrzucam:
Przekopiowanie właściwości nie zadziałało.

<!--MainWindow.xaml-->
<Window x:Class="WpfApp3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp3"
        mc:Ignorable="d"
        Title="Zarządzaj siecią rozproszoną" Height="350" Width="527">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="60*"/>
            <RowDefinition Height="259*"/>
        </Grid.RowDefinitions>
        <Rectangle Fill="Blue" HorizontalAlignment="Right" Margin="0,-1.148,-0.023,0" Width="75.568" Grid.RowSpan="2" d:LayoutOverrides="LeftMargin, RightMargin, TopMargin, BottomMargin"/>
        <TextBlock HorizontalAlignment="Right" Margin="0,67.057,-40.248,0" TextWrapping="Wrap" Text="Strona główna" Width="153.364" RenderTransformOrigin="0.5,0.5" FontWeight="Bold" FontSize="18.667" Height="29.333" Grid.Row="1" VerticalAlignment="Top" d:LayoutOverrides="LeftMargin, RightMargin, TopMargin, BottomMargin" Foreground="White">
            <TextBlock.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform Angle="89.483"/>
                    <TranslateTransform/>
                </TransformGroup>
            </TextBlock.RenderTransform>
        </TextBlock>
        <TextBlock Margin="10,10,80.545,10" TextWrapping="Wrap"><Run Text="Wybierz przyciski z menu, aby włączyć akcje."/><LineBreak/><Run Text="Każda z grup opcji umożliwia włączenie wiersza polecenia."/></TextBlock>
        <Button Content="Uruchom zarządzanie interfejsem sieciowym.
Opcja służy do przeglądania komputerów, usuwania ich z sieci oraz
ręcznego nadawania instrukcji." Height="53" Margin="10,10,80.545,0" Grid.Row="1" VerticalAlignment="Top" HorizontalContentAlignment="Center" FontWeight="Bold"/>
        <Button Content="Uruchom zarządzanie bibliotekami
Opcja służy do menedżera bibliotek oraz nadawania instrukcji ogólnych." Height="53" Margin="10,68,80.545,0" Grid.Row="1" VerticalAlignment="Top" HorizontalContentAlignment="Left" FontWeight="Bold" Click="StronaWysylania"/>
        <Button Content="Uruchom zarządzanie interfejsem sieciowym.
Opcja służy do przeglądania komputerów, usuwania ich z sieci oraz
ręcznego nadawania instrukcji." Height="53" Margin="10,10,80.545,0" Grid.Row="1" VerticalAlignment="Top" HorizontalContentAlignment="Left" FontWeight="Bold"/>
        <Button Content="Przeprowadź szybki DDoS" Margin="10,126,80.545,80" Grid.Row="1" HorizontalContentAlignment="Left" FontWeight="Bold" VerticalContentAlignment="Center"/>
        <Button Content="Uruchom zarządzanie serwerem
Statystyki, nowy serwer, restarty, książki adresowe." Height="53" Margin="10,0,80.545,22" Grid.Row="1" VerticalAlignment="Bottom" HorizontalContentAlignment="Left" FontWeight="Bold" Click="WPrzygotowaniu"/>

    </Grid>
</Window>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp3
{
// MainWindow.xaml.cs
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
            
        }

        private void WPrzygotowaniu(object sender, RoutedEventArgs e)
        {
            string message = "W przygotowaniu";
            // Show message box
            MessageBoxResult result = MessageBox.Show(message);
        }
        private void StronaWysylania(object sender, RoutedEventArgs e)
        {
            
            Biblioteki biblioteki = new Biblioteki();
            biblioteki.ShowDialog();

            // Hide the MainWindow until later
            this.Hide();
        }
    }
}
<!--Biblioteki_24_4_2017.xaml-->
<Window x:Class="WpfApp3.Biblioteki_24_4_2017"
      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:WpfApp3"
      Height="145" Width="454"
      x:Name="Biblioteki_24__2017"
      Title="Biblioteki">

    <Grid>
        <TextBlock Height="26" Margin="0,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"><Run Text="Wybierz plik z instrukcjami, aby wgrać go na serwer"/><Run Text="."/></TextBlock>
        <Button Content="Wybierz plik" Margin="25.603,41,25.603,50" Click="wyslijPlik"/>

    </Grid>
</Window>
//Biblioteki_24_4_2017.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp3
{
    /// <summary>
    /// Logika interakcji dla klasy Biblioteki_24.xaml
    /// </summary>
    public partial class Biblioteki_24_4_2017 : Window
    {
        public Biblioteki_24_4_2017()
        {
            
        }

        private void wyslijPlik(object sender, RoutedEventArgs e)
        {
        
        }
    }
}


0

Dobra, znalazłem. Brak instrukcji InitializeComponent(). Przeoczenie :/

0

Ewentualnie, skoro wątek jeszcze jest, mam inne pytanie - jak sprawić, by kontrolować zamknięcie okna?
Metoda close oraz zamknięcie z przycisku powodują, że zamyka się cała aplikacja (nawet, gdy otwarte jest kilka okien), a GC nie usuwa ich z pamięci.
Zapewne gdzieś referencje między tymi oknami zostają, ale właśnie - jak zrobić to tak, by elegancko zamykało się dane okno, usuwało się z pamięci i żeby aplikacja zamknęła się po zamknięciu okna głównego (ewentualnie inne instrukcje, ale to już inna bajka)?

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