WPF - Datenaustausch Zwischen zwei Fenstern

gtm

Grünschnabel
Hallo,

ich habe folgend Problem in Bezug auf meine Beispiel WPF-Anwendung:

Vorhanden sind zwei Fenster. In dem einem befindet sich eine ListeBox mit Elementen. Beim Doppelklick auf ein spezifisches Element, soll sich ein neues Fenster öffnen, in dem ich dann die Eigenschaften dieses Listen-Elements bearbeiten kann. Nachdem ich die Eigenschaften bearbeitet habe und bestätigt habe, sollen die Eigenschaften wieder im erstem Fenster sichtbar werden.

Mir ist klar, wie ich das Element der Liste (auf dem "doppelgeklickt" wird) identifiziere und übergebe dieses gleich beim instanziieren des 2. Fensters.

Code:
Window2.xaml.cs

public partial class Window2 : Window
    {
        public Place Place { get; set; }

        public Window2(Place inPlace)
        {
            InitializeComponent();
            this.Title = "Detail for" + inPlace.CityName;
            this.Place = inPlace;
        }

    }

Meine Xaml-Datei sieht folgendermaßen aus.

Code:
Window2.xaml
<Window x:Class="SDKSample.Window2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:src="clr-namespace:SDKSample"
    Title="Window XY" Height="300" Width="300">

        <Grid>
        <Grid Margin="0,0,0,12" Name="grid1" HorizontalAlignment="Stretch">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="50*" />
                <ColumnDefinition Width="100*" />
            </Grid.ColumnDefinitions>
            <TextBox Grid.Column="1" Height="23" Margin="0,6,19,0" Name="textBox1" VerticalAlignment="Top" HorizontalAlignment="Stretch" Background="LightBlue" />
            <TextBox Height="23" HorizontalAlignment="Stretch" Margin="0,35,19,0" Name="textBox2" VerticalAlignment="Top" Grid.Column="1" Background="LightBlue" />
            <TextBox Height="23" HorizontalAlignment="Stretch" Margin="0,64,19,0" Name="textBox3" VerticalAlignment="Top" Grid.Column="1" Background="LightBlue" />
            <Label Height="23" Margin="19,6,0,0" Name="label1" VerticalAlignment="Top" HorizontalAlignment="Right">CityName</Label>
            <Label Height="23" Margin="19,35,0,0" Name="label2" VerticalAlignment="Top" HorizontalAlignment="Right">State</Label>
            <Label Margin="19,64,0,0" Name="label3" Height="23" VerticalAlignment="Top" HorizontalAlignment="Right">Population</Label>
            <Button Height="23" Margin="92.333,0,110.333,6" Name="button1" VerticalAlignment="Bottom" Grid.ColumnSpan="2">Save</Button>
        </Grid>
    </Grid>
</Window>

Wie löse ich mein Problem? In den meisten WPF Tutorials sind die Interaktionen alle im gleichem Fenster. Wie bekomm ich einen vernüftige Datenbindung über 2 Fenster hin?

Gruß,
gtm
 
Idealerweise verwendest du ein passendes Pattern für solche Aufgaben. MVVM würde sich anbieten. Damit werden dir für - unter anderem - diese Fälle Lösungen vorgegeben.

Das am verlinkten Artikel angehängte Beispiel entspricht im Übrigen dem, was du machen willst.
 
Zurück