Autor Beitrag
Codemaster111
Hält's aus hier
Beiträge: 2

Windows 10
C#, WPF, Java
BeitragVerfasst: Mo 17.08.20 18:21 
Hallo!
Ich bin ein kompletter Neuling in C# und in WPF!
Hier eine kleine Frage die ihr Programmierpros sicher leicht lösen könnt.
Ich bitte euch mit Codebeispielen zu antworten und die komplette Lösung zu verraten.
Danke schon mal im voraus! :D
Ich arbeite an einem Kalender.
Meine Probleme:

:!: 1. Der Benutzer soll einen Termin erstellen können, wenn er den Button Add Termin klickt öffnet sich ein
neues Fenster dort kann er dann die Daten des Termins eingeben. Mein Problem hierbei ist nicht, dass
die Eingaben in Variablen gespeichert werden können, sondern dass ich nicht weiß wie diese Variablen
an den Kalender gebunden werden, sodass dieser etwas damit anfangen kann.
Hier die Codes:
Main Window.xaml:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
  <Window x:Class="Kalender.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:Kalender"
        mc:Ignorable="d"
        Title="MainWindow" Height="300" Width="400">
    <StackPanel Margin="422,0,91,-0.333">
        <Calendar  x:Name="cldSample" Height="178" SelectionMode="MultipleRange" Margin="-362,0,100,0" />
        <Button  Name="AddTermin" Height="30" Margin="-326,0,137,0" Content="Add Termin" FontSize="20" Click="AddTerminClick"/>
    </StackPanel>
</Window>

Main Window.xaml.cs:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
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 Kalender
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        void AddTerminClick(object sender, RoutedEventArgs e)
        {
            Window1 w = new Window1();
            w.Show();
        }
    }
}

Window1.xaml:
ausblenden volle Höhe XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
<Window x:Class="Kalender.Window1"
        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:Kalender"
        mc:Ignorable="d"
        Title="Window1" Height="450" Width="800">
    <StackPanel Orientation="Vertical">
        <TextBlock FontSize="30" Margin="262,0,0.333,0">Add your Termin here!</TextBlock>
        <StackPanel Orientation="Horizontal">
            <Label FontSize="25" Width="84" Content="Name:"/>
            <TextBox  Name="Name1" Height="41" Margin="204,0,195.333,0" Width="215" FontSize="20"/>
        </StackPanel>

        <Label Height="41" Margin="310,0,0.333,0" Content="Von:" FontSize="25"/>
        <StackPanel Orientation="Horizontal" Margin="111,0,0.333,0">
            <Label Content="Tag:" Width="45" FontSize="20"/>
            <TextBox Width="121" Name="TagVon1"></TextBox>
            <Label Content="Monat:" Width="73" FontSize="20"/>
            <TextBox Width="121" Name="MonatVon1"></TextBox>
            <Label Content="Jahr:" Width="49" FontSize="20"/>
            <TextBox Width="121" Name="JahrVon1"></TextBox>
        </StackPanel>
        <Separator FontSize="50" Height="85" Margin="0,2,0.333,2"></Separator>
        <Label Height="41" Margin="310,0,0.333,0" Content="Bis:" FontSize="25"/>
        <StackPanel Orientation="Horizontal" Margin="111,0,0.333,0">
            <Label Content="Tag:" Width="45" FontSize="20"/>
            <TextBox Width="121" Name="TagBis1"></TextBox>
            <Label Content="Monat:" Width="73" FontSize="20"/>
            <TextBox Width="121" Name="MonatBis1"></TextBox>
            <Label Content="Jahr:" Width="49" FontSize="20"/>
            <TextBox Width="121" Name="JahrBis1"></TextBox>
        </StackPanel>
        <Separator FontSize="20" Height="35" Margin="0,2,0.333,2"/>
        <Button Height="44" Margin="243,0,260.333,0" FontSize="25" Click="AddTerminClick1">Add Termin</Button>
    </StackPanel>
</Window>

Window1.xaml.cs:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
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.Shapes;

namespace Kalender
{
    /// <summary>
    /// Interaktionslogik für Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
        void AddTerminClick1(object sender, RoutedEventArgs e)
        {

        }
        void Calender()
        {
            String Name = Name1.Text;
            int TagVon = Convert.ToInt32(TagVon1.Text);
            int MonatVon=Convert.ToInt32(MonatVon1.Text);
            int JahrVon= Convert.ToInt32(JahrVon1.Text);

            int TagBis=Convert.ToInt32(TagBis1.Text);
            int MonatBis=Convert.ToInt32(MonatBis1.Text);
            int JahrBis=Convert.ToInt32(JahrBis1.Text);

        }

    }
}


:!: 2.Problem:
Wie erreiche ich, dass das Programm wenn es geschlossen wird die Daten "behält" und nicht bei einer erneuten Öffnung des Programms alles wieder "vergessen" wurde ?

Moderiert von user profile iconTh69: XML-Tags hinzugefügt
Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4791
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 17.08.20 18:45 
Hallo und :welcome:

Codemaster111 hat folgendes geschrieben:
Ich bitte euch mit Codebeispielen zu antworten und die komplette Lösung zu verraten.

Sorry, aber so funktioniert dieses (und auch jedes andere) Forum nicht!

Aber zu deinen konkreten Fragen:
1. Deine 2. Window-Klasse sollte die Werte als Eigenschaften (engl. properties) bereitstellen, so daß die aufrufende Window-Instanz auf diese Werte zugreifen kann (am einfachste, wenn du den Dialog mittels w.ShowDialog() modal aufrufst und direkt dahinter auf die Eigenschaften zugreifst).
Generell kann ich dir hierfür auch meinen Artikel Kommunikation von 2 Forms empfehlen (der auch unter WPF anwendbar ist).

Für ein kleines Projekt mag diese Vorgehensweise noch funktionieren, aber du solltest zwingend bei WPF mit MVVM (d.h. u.a. mit "Data Binding") arbeiten, ansonsten wird der Code immer komplizierter und fehleranfälliger.
Wenn du genereller Programmieranfänger bist, dann solltest du evtl. erst einmal die Grundlagen anhand einer Konsolenapplikation oder mittels Windows Forms lernen.

2. Dazu mußt die Daten extern abspeichern (z.B. in Dateien oder einer Datenbank). Du solltest dir dafür auch ein Datenmodell anlegen, dann könntest du dieses z.B. serialisieren (s. Mit XmlSerializer Objekte als XML speichern und laden).

Für diesen Beitrag haben gedankt: Codemaster111
Codemaster111 Threadstarter
Hält's aus hier
Beiträge: 2

Windows 10
C#, WPF, Java
BeitragVerfasst: Di 18.08.20 08:03 
Danke!
Aber eine Frage bleibt noch. Wozu soll ich solche Foren sonst benutzen?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4791
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 18.08.20 09:37 
Wenn du konkrete Fragen hast (so wie deine beiden bisherigen), dann werden wir versuchen, sie zu beantworten - aber (Haus-)Aufgaben machen wir nicht.

Außerdem sind viele, ähnliche Fragen schon mal gestellt worden, d.h. die Foren kannst du auch für deine eigenen Suchen benutzen.