WPF und datenbindung an objekt collektion ?

20/01/2010 - 11:38 von Reinhard Sanders | Report spam
ich versuche gerade mein erstes projekt auf wpf zu realisieren
und bin völlig gefrustet .
hab jetzt schon einige bsp probiert bekomme aber immer nur
fehlermeldungen - bzw habe auch den mechanismus nicht durchschaut


hat mal jemand ein minimalistisches bsp. wie man zbsp ein
objekt(kontakte) mit einer collection(contacts) von
objekten(contact(name,phone)) in einem wpfdatagrid anzeigen und
editieren kann ...
laut beispielen die ich dafür gefunden hatte mussten dafür mehrere xml
konstrultionen erstellt werden welche ich aber leider nicht richtig
verstehe und die auch fehlermeldungen produzierten. hierbei meine ich
nicht die xaml struktur der wpf-controlls selber.. sondern speziell die
der erforderlichen vermittlungsschicht...

danke auch...
reinhard
 

Lesen sie die antworten

#1 Peter Fleischer
20/01/2010 - 22:11 | Warnen spam
"Reinhard Sanders" schrieb im Newsbeitrag
news:4b56dd1a$0$7626$
ich versuche gerade mein erstes projekt auf wpf zu realisieren
und bin völlig gefrustet .
hab jetzt schon einige bsp probiert bekomme aber immer nur
fehlermeldungen - bzw habe auch den mechanismus nicht durchschaut


hat mal jemand ein minimalistisches bsp. wie man zbsp ein objekt(kontakte)
mit einer collection(contacts) von objekten(contact(name,phone)) in einem
wpfdatagrid anzeigen und editieren kann ...
laut beispielen die ich dafür gefunden hatte mussten dafür mehrere xml
konstrultionen erstellt werden welche ich aber leider nicht richtig
verstehe und die auch fehlermeldungen produzierten. hierbei meine ich
nicht die xaml struktur der wpf-controlls selber.. sondern speziell die
der erforderlichen vermittlungsschicht...



Hi Reinhard,
in WPF gibt es viele Bindungsmöglichkeiten. Nachfolgend mal eine einfache
Demo zu deiner Frage, in der die Bindung per Code realisiert ist.

XAML:

<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/...tion"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="500"
xmlns:tk="http://schemas.microsoft.com/wpf/20...lkit" Name="Window1">
<StackPanel>
<StackPanel Orientation="Horizontal">
<Button Name="btnLoad" Content="Laden" Margin="5"></Button>
<Button Name="btnSave" Content="Speichern" Margin="5"></Button>
</StackPanel>
<tk:DataGrid AutoGenerateColumns="True" Name="dg"/>
</StackPanel>
</Window>

Code-Behind dazu:

Imports System.Collections.ObjectModel
Imports System.Xml.Serialization
Imports System.IO

Class Window1

Private filename As String = "c:\temp\x.xml"
Private ser As New XmlSerializer(GetType(ObservableCollection(Of
Contact)))
Private col As New ObservableCollection(Of Contact)

Private Sub Window1_Loaded(ByVal sender As System.Object, _
ByVal e As System.Windows.RoutedEventArgs) _
Handles MyBase.Loaded
col.Add(New Contact With {.Name = "Demo"})
Me.dg.ItemsSource = col
End Sub

Private Sub btnLoad_Click(ByVal sender As System.Object, _
ByVal e As System.Windows.RoutedEventArgs) _
Handles btnLoad.Click
Using fs As New FileStream(filename, FileMode.Open)
Me.dg.ItemsSource = ser.Deserialize(fs)
End Using
End Sub

Private Sub btnSave_Click(ByVal sender As System.Object, _
ByVal e As System.Windows.RoutedEventArgs) _
Handles btnSave.Click
Using fs As New FileStream(filename, FileMode.Create)
ser.Serialize(fs, Me.dg.ItemsSource)
End Using
End Sub

End Class

Public Class Contact

Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property

Private _phone As String
Public Property Phone() As String
Get
Return _phone
End Get
Set(ByVal value As String)
_phone = value
End Set
End Property

End Class

Optimal wàre, wenn du versuchen würdest, deine Frage grammatikalisch
fehlerfrei zu formulieren, indem du deine Umschalttaste am PC reparieren
lassen würdest. Das würde die Verstàndlichkeit ungemein erhöhen und damit
auch die Wahrscheinlichkeit einer qualifizierten Antwort :-)

Viele Gruesse

Peter

Ähnliche fragen