Hi Leute,
hoffe ich bin hier richtig.
Habe im WPF einen Datagrid indem ich mir eine Spalte mit einer Combobox angelegt habe:
<DataGrid AutoGenerateColumns="False" Height="158" HorizontalAlignment="Left" Margin="23,210,0,0" Name="dgrTageAuswahl" VerticalAlignment="Top" Width="313">
<DataGrid.Columns>
<DataGridTextColumn Header="Tag" IsReadOnly="True" Binding="{Binding Tag}"></DataGridTextColumn>
<DataGridTemplateColumn Header="Datum">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Datum}" BorderThickness="0"></DatePicker>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridComboBoxColumn Header="ART">
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
Würde hier gerne die ComboBox aus einer Sql-Tabelle befüllen...
Hatte davor eine "normale" Combobo" und habe es so gemacht:
SqlConnection sqlCon = new SqlConnection(ConnString);
sqlCon.Open();
string Query = "Select ID,Art from Test";
SqlCommand creatCommand = new SqlCommand(Query, sqlCon);
SqlDataReader dr = creatCommand.ExecuteReader();
while (dr.Read())
{
string name = dr.GetString("Art");
combobox1.items.add(name);
}
Komme aber hier überhaupt nicht klar...
Kann die Daten natürlich auch in eine DataTable oder so einlesen - aber wie binde ich meine ComboboxColumn daran?
Ich habe mal den Titel editiert. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 3. Wenn du einen besseren Vorschlag hast, dann editier ihn nochmal. Kein Suchender wird wissen, was mit dem Titel "WPF Datagrid Combobox" gemeint ist, wenn er den Thread in der Suche findet. Dein Problem hat mit dem Binding einer DataGridComboBoxColumn zu tun. Das sollte im Titel auch klar werden.
Würde hier gerne die ComboBox aus einer Sql-Tabelle befüllen... Aus einer Sql-Tabelle kann man ein Datenmodell befüllen - eine Combobox oder ComboboxColumn kannst du daraus nicht befüllen.
Ans Datenmodell kannst du die Combobox(Column) binden.
Mehr kann ich dazu nicht sagen, denn ich kenne dein Datenmodell nicht.
Edit: Ich sehe grade Hinweise, dass du überhaupt kein Datenmodell hast, und dass du tatsächlich Controls mittels DataReader-Schleifen befüllst.
Vlt. magst du dich mal zum MVVM-Pattern schlau machen, weil sone Control-Befüllerei ist über kurz oder kürzer kaum mehr zu bewältigen.
Der frühe Apfel fängt den Wurm.
Hi,
danke für die Antwort...
das mit dem Reader habe ich jetzt nur bei der ComboBox als "Test" genommen.
Normal befülle ich es so:
string Query = "Select ID,Art from Test";
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConnString;
SqlCommand command = new SqlCommand();
command.Connection = conn;
command.CommandText = Query;
DataTable dt = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(command);
adapter.Fill(dt);
dgrTageAuswahl.ItemsSource = dt.AsDataView();
Ich bekomme das mit der ComboBox aber nicht wirklich hin...
Habe nur wenige Selects wirklich im Code - eigentlich nur um einige wenige Forms zu füllen. Die Restlichen (Insert, Update, Delete bzw. auch Userbezogene) sind in einer Stored-Procedure am Server.
Nachwievor nichts, was ich als "Datenmodell" oder "Viewmodel" bezeichnen würde.
Und ItemsSource ist etwas, was man im Xaml setzen sollte, halt mit Databinding. Databinding ist ein Bestandteil des MVVM-Patterns.
Wie gesagt: MVVM-Pattern erlernen.
Der frühe Apfel fängt den Wurm.
Was hat jetzt aber das Datenmodell mit meiner Frage zu tun? ?(
Hätte nur gerne gewusst wie ich eine ComboboxColumn in einem Datagrid befülle...
Sorry aber das sind Codebeispiele - was würde dir leicht noch fehlen? Das ist keine große Anwendung 8).
Sagte ich doch schon in meim ersten post:
In Wpf hat man ein Viewmodel, und im Xaml bindet man Controls daran.
Ohne Model kein Databinding und kein MVVM.
Tatsächlich weiß ich gar nicht, wie man anders eine DataGridComboColumn funktionsfähig machen könnte.
Also ich weiß nicht, "wie ich eine ComboboxColumn in einem Datagrid befülle...", (und halte das auch nicht für wissenswert).
Ich weiß, wie man sone Column bindet, aber dazu brauchts halt ein Viewmodel.
Edit: Ich häng mal Beispiel an.
Es zeigt 4 Datagrids. Auf der rechten seite die Grids haben als letzte Spalte eine ComboColumn.
Das Datenmodell ist in einem typisierten Dataset modelliert.
Ist ziemlich lausig, an Dataset zu binden, EF-Entity-Klassen sind da angenehmer, denn bei Entities kann der Xaml-Editor einigermassen geeignete Bindings vorschlagen.
Dafür braucht man bei DatasetOnly keine Datenbank. Wenn du wirklich nur eine kleine Anwendung basteln willst, ist typDataset eine sehr gute Option, denn wie du siehst, ist das so portabel, dass ichs hier gezippt anhängen kann, und es kann bei dir sofort ohne weitere Anpassungen laufen - inklusive Datenbestand.
Der frühe Apfel fängt den Wurm.
🤔 ok danke - damit kenn ich mich eigentlich überhaupt nicht aus - sollte eigentlich nur eine ganz kleine Anwendung werden...
sollte eigentlich nur eine ganz kleine Anwendung werden...
MVVM hat nichts mit grosser oder kleiner Anwendung zu tun. Wenn sie gross ist ist es besser, man verwendet MVVM. Wenn sie nicht gross ist, hat man den perfekten Platz um es zu lernen. MVVM ist eines der Key-"Features" im WPF. Da führt kein Weg dran vorbei.
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hello,
danke für das Beíspiel - leider funktioniert es überhaupt nicht bei mir... X(
Du musst es über die WareHouse00\WpfCs\WareHouse\WareHouse.sln
öffnen, damit die Helper-Projekte eingebunden sind.
Dann sollte es aber mit F5 loslaufen - sofern du mindestens VS2012 hast.
Der frühe Apfel fängt den Wurm.
Die sln habe ich geöffnet - habe hier leider nur die 2010er Version 😭.. habe das Net-Framework ausgebessert - es ist aufgegangen ich kann es nicht ausführen...
Aber zum "Verständniss":
Ich mache mir eine Klasse zum holen dert Daten und eine Klasse ViewModel wo ich diese Daten bestimme bzw. aufbereite..
Dann sollte ich bim DataContext doch diese Klassen auswählen können oder?
Bin ich hier ganz falsch - das ist doch ein großes Gebiet...
hab den Upload durch eine DownGrade-Version ersetzt - probier nochma.
Zur Frage: Die Klasse ist nicht zum Holen der Daten, sondern versteh sie als modell der Wirklichkeit.
Im Sample gibts ein Warenhaus mit Artikeln, ArtikelKategorien und Lieferanten.
Also das ist die Wirklichkeit: Artikel, ArtikelKategorien Lieferanten
Ein Datenmodell bildet das durch geeignete Klassen ab, wobei insbesondere die Zuordnungen besondere Beachtung verdienen.
Also dass die Artikel, die in wirklichkeit einer Kategorie angehören, auch im Datenmodell eine eindeutig Zuordnung (Relation) erfahren.
Ebenso wie dass modelliert ist, welche Lieferanten welche Artikel liefern.
Auf englisch habich einen Einführungs-Artikel dazu verzapft: [UR=]http://www.codeproject.com/Articles/1030969/Relational-Datamodel-for-Beginners]Relational Datamodel for Beginners[/url]
Wie du das Modell befüllst "Daten holen" - ist eine gänzlich andere Baustelle. Ich empfehle immer, die Daten der Einfachheit halber direkt von Platte zu lesen, ohne iwelches Datenbank-Brimborium drumrum.
Aber natürlich kann man ein Datenmodell auch aus Datenbanken befüllen.
Der frühe Apfel fängt den Wurm.
Hi, jetzt funktioniert das Beispiel perfekt!
Werde mir das ganze jetzt mal ansehen..
Echt toll von dir - DANKE!!
So bisschen hineingesehen:
Hatte mir das nicht so schlimm vorgestellt - blicke hier jetzt eigentlich immer weniger durch...
Hatte mir das nicht so schlimm vorgestellt - blicke hier jetzt eigentlich immer weniger durch... Es ist halb so wild, vieles kann ich dir ja erklären.
Nur musst du auch fragen.
Der frühe Apfel fängt den Wurm.
Ich verstehe das einfach nicht - habe jetzt einige Beispiele durchgelesen - die sind alle gut und schön ABER....
Wohin schreibe ich Daten die ich von einer Datenbank hole damit ich diese auch binden kann?
Habe es so gemacht:
dgrTageAuswahl.ItemsSource = dt.AsDataView();
Jedoch ist diese Vorgehensweise falsch - ich verstehe es einfach nicht...
Auch habe ich hier das Problem, dass ich eigentlich die Columns in meinem Datagrid an unterschiedliche Quellen binden mächte. 🤔
Habe auch noch folgendes geschrieben (sollte in dem gleichen Datagrid wie meine Combobox sein):
private void btnUebernehmen_Click(object sender, RoutedEventArgs e)
{
//Liste erstellen um darin die Datums vom Kalender zu speichern
List<UrlaubsDaten> UrlaubsDatenDataGrid = new List<UrlaubsDaten>();
// alle ausgewählen Datums auslesen
foreach (DateTime d in calAuswahl.SelectedDates)
{
string EnglWochentag = d.DayOfWeek.ToString();
UrlaubsDaten Wochentag = new UrlaubsDaten();
string AutWochentag = Wochentag.WoTagRename(EnglWochentag);
UrlaubsDatenDataGrid.Add(new UrlaubsDaten { Datum = d, Tag = AutWochentag });
}
dgrTageAuswahl.ItemsSource = UrlaubsDatenDataGrid;
}
Das funktioniert 😁 auch falsch?
Mein XAML-Code sieht hier wie folgt aus (schlimm):
<Grid Height="388" Width="945">
<Calendar
Height="171" HorizontalAlignment="Left" Margin="12,0,0,184" Name="CalVon" VerticalAlignment="Bottom" Width="205" SelectionMode="MultipleRange" />
<Button Content="Übernehmen" Height="24" HorizontalAlignment="Left" Margin="223,43,0,0" Name="btnUebernehmen" VerticalAlignment="Top" Width="88" Click="btnUebernehmen_Click" />
<DataGrid AutoGenerateColumns="False" Height="158" HorizontalAlignment="Left" Margin="23,210,0,0" Name="dgrTage" VerticalAlignment="Top" Width="313">
<DataGrid.Columns>
<DataGridTextColumn Header="Tag" IsReadOnly="True" Binding="{Binding Tag}"></DataGridTextColumn>
<DataGridTemplateColumn Header="Datum">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Datum}" BorderThickness="0"></DatePicker>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridComboBoxColumn Header="Urlaubsart">
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
Komme nicht weiter....
Wohin schreibe ich Daten die ich von einer Datenbank hole damit ich diese auch binden kann? Guck den Upload an, den ich dir angehängt hab - wohin werden da die Daten geschrieben, die von Platte gelesen werden?
class MainViewModel : NotifyPropertyChanged {
private FileInfo _DataFile = new FileInfo(@"..\..\Data\FourViewsDts.xml");
private FourViewsDts _Dts = new FourViewsDts();
public FourViewsDts Dts { get { return _Dts; } }
private RelayCommand _CmdRefill;
public RelayCommand CmdRefill { get { return _CmdRefill??(_CmdRefill=new RelayCommand(Refill)); } }
public MainViewModel() {
}
private void Refill() {
_Dts.Clear();
_Dts.ReadXml(_DataFile.FullName);
}
}
Der frühe Apfel fängt den Wurm.
So gehe das ganze jetzt von "vorne" an:
Habe mir eine Classe erstellt mit dem namen MainPageViewModel.cs
namespace IdCard
{
class MainPageViewModel
{
public MainPageViewModel()
{
this.Person = new Person();
this.Person.Name = "Matthias";
this.Person.EMail = "hallo@gmx.at";
}
public Person Person { get; set; }
}
}
würde das gerne in meinem XAML hinzfügen:
<Window x:Class="IdCard.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:IdCard"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<vm:MainPageViewModel />
</Window.DataContext>
<Grid>
<TextBox Text="Hallo"></TextBox>
</Grid>
</Window>
Jedoch = > Fehlermeldung:
Error 1 The tag 'MainPageViewModel' does not exist in XML namespace 'IdCard'. Line 7 Position 10. D:\Visual Studio 2010\Projects\IdCard\IdCard\MainWindow.xaml 7 10 IdCard
Verstehe das nicht - arbeite hier nach Beispielen in einem Buch...
Kann mir das jemand erklären?
LÖSUNG:
<Window x:Class="IdCard.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:IdCard"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<vm:MainPageViewModel x:FieldModifier="ViewModel"/>
</Window.DataContext>
Meine Visual Studio 2010-Version ist vielleicht veraltet...
Versuchs mal mit Public 😉 Natürlich unter der Voraussetzung dass du entweder die Assembly korrekt referenziert hast oder die Klasse in der selben Assembly liegt wie dein MainWindow
Wenn's zum weinen nicht reicht, lach drüber!
So habe nun wieder mal dafür Zeit gefunden...
Versuche verzweifelt Columns in Datagrid an meine ViewModel zu binden:
<Window x:Class="Urlaube.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:Urlaube.ViewModel"
Title="Urlaube" Height="374" Width="631">
<Window.Resources>
<vm:ViewModelUrlaubstage x:Key="myVM"/>
</Window.Resources>
<Grid DataContext="{StaticResource myVM}">
<TextBox Text="{Binding Path=Urlaubsdaten.Tag}" Margin="235,39,217,270"></TextBox>
<DataGrid Height="120" HorizontalAlignment="Left" Margin="235,82,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="265" DataContext="{Binding Path=Urlaubsdaten}" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Header="Tag" Binding="{Binding Path=Tag}"></DataGridTextColumn>
<DataGridTextColumn Header="Test" Binding="{Binding Path=Datum}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
Die Textbox wird hier schön befüllt warum nicht der Datagrid?
Probiere einfach mal: 😉
ItemsSource="{Binding Path=Urlaubsdaten}"
<Window x:Class="Urlaube.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:Urlaube.ViewModel"
Title="Urlaube" Height="374" Width="631">
<Window.Resources>
<vm:ViewModelUrlaubstage x:Key="myVM"/>
</Window.Resources>
<Grid DataContext="{StaticResource myVM}">
<TextBox Text="{Binding Path=Urlaubsdaten.Tag}" Margin="235,39,217,270"></TextBox>
<Calendar Height="163" HorizontalAlignment="Left" Margin="12,12,0,0" Name="calendar1" VerticalAlignment="Top" Width="183" />
<DataGrid Height="120" HorizontalAlignment="Left" Margin="235,82,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="265" ItemsSource="{Binding Path=Urlaubsdaten}">
<DataGrid.Columns>
<DataGridTextColumn Header="Tag" Binding="{Binding Path=Tag}"></DataGridTextColumn>
<DataGridTextColumn Header="Test" Binding="{Binding Path=Datum}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
Nichts..
Bekomme keinen Fehler - er befüllt es einfach nicht..
Kann es eigentlich überall sehr gut auswählen nur eben in der
DataGridTextColumn nicht...
Dann wird die ViewModelUrlaubstage.Urlaubsdaten
- Property - wenn es sie überhaupt gibt - wohl nicht geeignet sein, um eine ItemsSource daran zu binden.
Und bei Binding-Mismatches bekommt man auch keine herkömmlichen Fehler, sondern nur so Fehler-Log-Zeilen ins Output-Fenster oder ins Debug-Fenster (und evtl. noch woanders hin, kommt drauf an, wie's VS eingerichtet ist)
Der frühe Apfel fängt den Wurm.
Ok - hier ist aber nicht viel - sollte nur ein Beispiel sein.
Die Textbox befüllt er aber??
namespace Urlaube.ViewModel
{
public class ViewModelUrlaubstage
{
public Urlaubsdaten Urlaubsdaten{get; set;}
public ViewModelUrlaubstage()
{
this.Urlaubsdaten = new Urlaubsdaten();
this.Urlaubsdaten.Tag = "Mittwoch";
}
}
}
Welchen Typ hat die Urlaubsdaten-Property?
Die ItemsSource setzt ein IEnumerable voraus.
Den Rest hat ErfinderDesRades gesagt. 🙂
namespace Urlaube.Model
{
public class Urlaubsdaten
{
public string Tag { get; set; }
public DateTime Datum { get; set; }
}
}
OK habe das mit dem IEnumerable überlesen.
Das ganze in eine List:
namespace Urlaube.ViewModel
{
public class ViewModelUrlaubstage
{
//public Urlaubsdaten Urlaubsdaten{get; set;}
public List<Urlaubsdaten> ListUrlaubsdaten = new List<Urlaubsdaten>();
public ViewModelUrlaubstage()
{
//this.Urlaubsdaten = new Urlaubsdaten();
//this.Urlaubsdaten.Tag = "Mittwoch";
this.ListUrlaubsdaten.Add(new Urlaubsdaten {Tag= "mittwoch"});
}
}
}
Jetzt finde ich es bei ItemSource aber nicht mehr zum auswählen
Zum Debuggen von Databindings lege ich mir immer einen "TestConverter" an, der nichts konvertiert, sondern nur einen Breakpoint enthält und gleich value wieder zurückgibt.
So kann man sehr schön sehen ob...*Das Binding generell funktioniert
*Was anderes in dem gebundenen Objekt steht als erwartet
Edit:
Das funktioniert nicht, weil deine Property **ListUrlaubsdaten **heißt, dein Binding aber auf Urlaubsdaten geht.
Hi, wollte es auf ListUrlaubsdaten ausbessern aber das findet er nicht...
Bin ich wenigstens am richtigen Weg?
jo, denke schon.
Oft findet Xaml im Designer nicht gleich die Viewmodel-Properties, weil erst noch kompiliert werden muss.
Der frühe Apfel fängt den Wurm.
🤔
<Window x:Class="Urlaube.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:Urlaube.ViewModel"
Title="Urlaube" Height="374" Width="631">
<Window.Resources>
<vm:ViewModelUrlaubstage x:Key="myVM"/>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource myVM}}">
<TextBox Text="{Binding Path=Urlaubsdaten.Tag}" Margin="235,39,217,270" DataContext="{Binding}"></TextBox>
<Calendar Height="163" HorizontalAlignment="Left" Margin="12,12,0,0" Name="calendar1" VerticalAlignment="Top" Width="183" />
<DataGrid Height="120" HorizontalAlignment="Left" Margin="235,82,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="265" ItemsSource="{Binding Path=ListUrlaubsdaten}">
<DataGrid.Columns>
<DataGridTextColumn Header="Tag" Binding="{Binding Path=ListUrlaubsdaten.Tag}"></DataGridTextColumn>
<DataGridTextColumn Header="Test" Binding="{Binding Path=Datum}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
namespace Urlaube.ViewModel
{
public class ViewModelUrlaubstage
{
public Urlaubsdaten Urlaubsdaten{get; set;}
public List<Urlaubsdaten> ListUrlaubsdaten = new List<Urlaubsdaten>();
public ViewModelUrlaubstage()
{
this.Urlaubsdaten = new Urlaubsdaten();
this.Urlaubsdaten.Tag = "Mittwoch";
this.ListUrlaubsdaten.Add(new Urlaubsdaten {Tag= "mittwoch"});
}
}
}
Urlaubsdaten findet er bei ItemSource aber die ListUrlaubsdaten nicht???
ListUrlaubsdaten muss eine Property sein, im Moment ist es ein Feld.
Ok - jetzt habe ich mein Projekt abgeschossen - lässt sich nicht mehr öffnen...
Wie muss ich das bei der List genau setzten?
public List<Urlaubsdaten> ListUrlaubsdaten
{
get { return ListUrlaubsdaten; }
set { ListUrlaubsdaten = value; } {
Habe es so geschrieben und mein Projekt geht nich mehr auf 🙁
Es ist egal welchen Datentyp deine Property hat, die Herangehensweise ist immer gleich. Bei der Property "Urlaubsdaten" hast du es doch auch hinbekommen...
Ok - jetzt habe ich mein Projekt abgeschossen - lässt sich nicht mehr öffnen... guggemol https://www.vb-paradise.de/index.php/Thread/57189-solutionexplorer-opensource/
Damit kann man mit 1 Klick ein Backup machen. Und wenn Daten-Dateien im Projekt eingebunden sind, werden die auch mit-gezippt.
Der frühe Apfel fängt den Wurm.
Hatte natürlich ein Backup - wusste aber nicht warum es einfach nicht aufging..
ABER jetzt bin ich beim gleichen Status wie oben.
Wie bekomme ich jetzt diese Combobox???
Ursprüngliche Frage warum ich überhaupt dieses Thema eröffnet habe 😁 👅
Aber ich schaue es mir mal an.
DANKE ihr habt mir sehr geholfen - ich frage natürlich wieder!!
So gleich noch ne Frage.
Habe davor mein Datagrid ja so befüllt - Ok das befüllen ist jetzt klar.
private void btnUebernehmen_Click(object sender, RoutedEventArgs e)
{
List<UrlaubsDaten> UrlaubsDatenDataGrid = new List<UrlaubsDaten>();
foreach (DateTime d in CalVon.SelectedDates)
{
string EnglWochentag = d.DayOfWeek.ToString();
UrlaubsDaten Wochentag = new UrlaubsDaten();
string AutWochentag = Wochentag.WoTagRename(EnglWochentag);
UrlaubsDatenDataGrid.Add(new UrlaubsDaten { Datum = d, Tag = AutWochentag });
}
dgrTage.ItemsSource = UrlaubsDatenDataGrid;
}
Aber das auslesen aus dem Calendar passiert doch weiterhin im Codebehind oder?
Oder kann ich eine Spalte dom Datagrid an den Calendar binden?
Jetzt unterbrich mal das Weiter-Entwickeln deines Anwendungsfalles, und befasse dich ganz grundsätzlich mit dem MVVM-Pattern.
Ansonsten wird das immer gurkiger, was du da treibst.
Das gezeigte Click-Event sollte niemals so gecodet werden, sondern man hätte ein DelegateCommand
im Viewmodel, an welches der Xaml-Button sein Command bindet.
probiermal, ob du bei https://www.vb-paradise.de/index.php/Thread/115475-MVVM-Anwendungs-Struktur/?postID=1005812#post1005812
durchsteigst - zur Not müssteste dir das PersonList-Projekt halt nach c# übersetzen.
Das Helpers-Projekt kann sogar in vb.net bleiben, man kann beide Sprachen durchaus in einer Solution zusammenbinden.
Oder halt bis morgen warten, dann sollte ich den Sample-Code selbst übersetzt haben.
Oder such dir andere MVVM-Tuts, aber hör möglichst auf mit CodeBehind - du gewöhnst dir hundsmiserablen Stil an.
Der frühe Apfel fängt den Wurm.
Ja aber ich lese nur noch statt zu programmieren...
Das mein erster WPF-Code - hier alles gleich richtig zu machen ist nicht möglich.
Würde gerne diese Programm halbwegs zum laufen bringen. Verbessern kann ich es doch dann immer noch!?!
Nur war ich am Anfang mit dem Code-Behind weiter als ich jetzt bin bzw. hatte ich das in 10 Minuten und hier Wochen..
Eigentlich möchte ich ja nur einen Datagrid bei dem ich auch etwas erfassen kann.. mehr ist es nicht bzw. mache ich sonst alles auf der Datenbank (eher meine Welt).
Würde gerne diese Programm halbwegs zum laufen bringen. Verbessern kann ich es doch dann immer noch!?! Halte ich zumindest für einen Fehlschluss.
Ist die Basis eines Programms verfehlt, so kann man es nicht verbessern.
Man kann nur den Zeitpunkt hinauszögern, wann man es doch verwerfen wird, um nochmal neu und auf solider Basis anzufangen.
Der frühe Apfel fängt den Wurm.
Man kann nur den Zeitpunkt hinauszögern, wann man es doch verwerfen wird, um nochmal neu und auf solider Basis anzufangen.
Dann aber mit mehr Erfahrung und Kenntnis 😄.
Finde ich bei so einem kleinen Pojekt jetzt wirklich nicht sehr schlimm.
Nur irgendwie kommt man nicht weiter...