WPF Databinding

04/09/2009 - 14:58 von Wolfgang Schmidt | Report spam
Hallo,

Mein erster Kontakt mit WPF wirft eine Menge Fragen auf.

Eigentlich dachte ich, ganz einfache Sachen machen zu wollen.

Eine einfache Oberflàche, auf welcher ein paar TextBoxen, Comboboxen,
eine CheckedListbox und eine DataGridView ist.

Jetzt hànge ich an ein paar Punkten.

Problem 1 TextBox:
Ich habe eine Textbox, geben wir ihr mal den Namen Textbox1
<TextBox Name="TextBox1" Grid.Row="0" Grid.Column="1" Margin="3"/>

Per Code habe ich diese an eine andere Klasse gebunden
Binding aBinding = new Binding();
aBinding.Source = ViewModel_in;
aBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
aBinding.Path = new PropertyPath("Name");
this.TextBox1.SetBinding(TextBox.TextProperty, aBinding);

Jetzt habe ich das eigentlich irritierend kleine Problem, dasss ich
gerne ein Autocomplete auf eine Liste hàtte. Nur leider finde ich bei
der Textbox keine solche Eigenschaft, an die ich etwas binden könnte.
Gibt es da einen Umweg?

Problem 2 ComboBox:

<ComboBox Name="ComboBox1" Grid.Row="3" Grid.Column="1" Margin="3" /





Code wiederum
// binden an eine ObservableCollection
Binding aBinding = new Binding();
aBinding = new Binding();
aBinding.Source = viewModel_in;
aBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
aBinding.Path = new PropertyPath("Versions");
this.ComboBox1.SetBinding(ComboBox.ItemsSourceProperty, aBinding);
// setzen des Anzeigeelementes
this.ComboBox1.DisplayMemberPath = "Name";
// setzen des gebundenen aktuellen Anzeigeelementes
aBinding = new Binding();
aBinding.Source = viewModel_in;
aBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
aBinding.Path = new PropertyPath("SelectedVersion");
this.ComboBox1.SetBinding(ComboBox.SelectedItemProperty, aBinding);

Nur hàtte ich jetzt gerne die Möglichkeit, in diese Combobox auch neue
Werte einzutragen.

Naiver Ansatz:
public ObservableCollection<DataModelVersion> Versions
{
get { return MyVersions; }
set {
if (MyVersions.Description != value)
{
MyVersions.Insert
(FrameworkVersions.Count,MySelectedFrameworkVersions);
OnPropertyChanged("Versions");
}
}
nur: ich kann in der ComboBox gar nichts eingeben, und daher wird nie
in den set-Teil gesprungen. Was müßte getan werden, um Werte in einer
Combobox auch neu setzen zu können?

Sehr ins stolpern gerade ich bei CheckedListbox und DataGridView. Bei
DataGridView bin ich langsam am überlegen mit
<wfi:WindowsFormsHost Grid.Column="2" Grid.Row="1" Margin="3">
<wf:DataGridView x:Name="DataGridXY">
</wf:DataGridView>
</wfi:WindowsFormsHost>
weiterzumachen, gibt es da elegantere Lösungen?

Bei CheckedListboxen finde ich da auch noch keine elegante Lösung. Ich
kann zwar eine Listbox mit enthaltenem Stackpanel mit enthaltener
Checkbox erzeugen, aber da fehlt mir dann die Datenbindung komplett.

Gibt es für die Probleme einigermassen gangbare Lösungen, oder bin ich
besser beraten bei WinForms zu bleiben?

Viele Grüße,
Wolfgang
 

Lesen sie die antworten

#1 Michaela Meier
06/09/2009 - 15:02 | Warnen spam
Wolfgang Schmidt wrote:
Gibt es für die Probleme einigermassen gangbare Lösungen, oder bin ich
besser beraten bei WinForms zu bleiben?



Das kommt darauf an, wieso Du den Kontakt zu WPF überhaupt gesucht hast ;-)

Michaela

Ähnliche fragen