Laden...
Avatar #avatar-2909.png
michlG myCSharp.de - Experte
Student + Programmierer Naturns - Südtirol - Italien Dabei seit 26.07.2007 3.430 Beiträge

Forenbeiträge von michlG Ingesamt 3.430 Beiträge

13.04.2011 - 11:47 Uhr

Hallo,

wenn du sowas machen musst dann ist etwas an deiner Software-Architektur falsch.
Denn sowas darf und kann man nicht machen.

Und es ist in der Objektorientierung auch nicht nötig 😃

Gruß
Michael

13.04.2011 - 11:46 Uhr

Hallo tom_182,

willkommen bei myCSharp.de

Ich habe das Problem zwar noch nie gehabt und verwende den Designer auch so gut wie nie aber ich vermute dass du da auf die WinForms-Controls gestoßen bist.
Und diese kannst du so einfach nicht verwenden.

Du musst da schon die WPF Controls verwenden.
Verwende das WPF DataGrid und binde die Daten dann daran
Guck mal hier: WPF DataGrid

Wenn du .NET 4 verwendest brauchst du das WPF-Toolkit nicht zu verwenden da das DataGrid schon im Framework dabei ist

Gruß
Michael

12.04.2011 - 16:01 Uhr

Hallo diego2k,

meinst du das DataGrid oder das Grid?
Beim DataGrid kannst du einfach FrozenColumnCount="1" setzen um die erste Spalte zu freezen und somit immer sichbar zu lassen.

Wenn du ein Grid meinst dann kannst du einfach zwei Spalten erstellen.
In der zweiten knallst du einen ScrollViewer dann hast du das gewünschte Ergebnis

Gruß
Michael

12.04.2011 - 11:58 Uhr

Hallo,

du kannst da z.B. eine CollectionViewSource verwenden und dann einen Filter auf diese anwenden.

Siehe dazu: How do I filter items from a collection?

Gruß
Michael

11.04.2011 - 22:34 Uhr

Hallo nighty2k,

in WPF ist das DataBinding ein sehr mächtiges Werkzeug.
Deshalb ist es auch nicht so einfach es in ein paar Worten zu erklären 😃

Kurz gesagt stellst du für die GUI deine Liste zur Verfügung.
In der GUI bindest du dann das DataGrid per {Binding VariablennameX} an deine Liste.

Im DataGrid kannst du dann das automatische Generieren der Spalten ausschalten und die Spalten-Definition selbst erstellen.
Damit kannst du auch nur den Namen anzeigen

Das Problem mit der Aktualisierung löst sich fast mit dem DataBinding.
Du musst nur noch das INotifyPropertyChanged Interface in deiner Code-Datei implementieren und das PropertyChanged event immer auslösen sobald die Liste geändert wurde.
Damit wird das DataGrid automatisch aktualisiert.

PS: IQueryable ist nicht so geschickt für das DataBinding.
Besser ist das eine ObservableCollection<T> geeignet das diese auch Änderungen in der Collection direkt an die GUI weitergibt.

Das ist jetzt alles ziemlich viel Input auf einmal, aber diese ganze Thematik ist einfach zu umfangreich um es in ein paar Wörtern zu erklären 😃

Gruß
Michael

10.04.2011 - 22:16 Uhr

Hallo,

In der Regel haben Server statische IPs.
Falls das nicht der Fall dann kannst du unter Umständen auch DNS verwenden (wird im Internet auch so gemacht).
Du gibts "google.de" ein und der DNS Server gibt dir dann die passende IP damit der Browser die Seite laden kann.

In einem LAN funktioniert das in der Regel auch. Durch die Namensauflösung ist es möglich dass du den Computernamen anstatt der IP verwendest.

PS: Probier mal mit einem PING ob der Server erreichbar ist.
Dann siehst du sofort ob es eine Verbindung gibt oder nicht.

Gruß
Michael

05.04.2011 - 18:57 Uhr

Hallo,

große Firmen werden sicher selbst Designer haben oder welche anstellen aber in den kleinen ist es oft so dass einfach das verwendet wird was man hat 😃

Gruß
Michael

05.04.2011 - 18:57 Uhr

Hallo,

ich verwende meist die Icons von VistaIcons. Die sehen gut aus und sind zudem gratis.
Man muss nur irgendwo im Aboutfenster auf die verlinken.
Aber das liest du besser selbst nach VistaIcons

Gruß
Michael

04.04.2011 - 20:14 Uhr

Hallo,

Edit: Ich glaub ich habs. Im Beispiel hieß es zwar Text, aber "Name" müsste doch in allen Sprachen gleich sein, wenn bei mir Text = einfügen und Name = Paste oder?

Guck mal in dem geposteten Thread im Beitrag darunter.
Dort schrieb jemand dass es in Japanisch nicht "Paste" heißt.
Und hab eine Lösung dafür gepostet

Gruß
Michael

04.04.2011 - 19:51 Uhr

Hallo The-Forgotten,

guck mal hier: Make WPF TextBox as cut copy paste restricted

Gruß
Michael

02.04.2011 - 22:57 Uhr

Hallo,

wie kommt das? was kann man dagegen machen?

Das Problem ist dass du schon eine riesige Zahl hast.
15613185276914
Wenn du diese jetzt noch quadrierst kriegst du sowas raus: 8272973071983014084
Da Math.Pow aber doubles verwendest hast du die Zahl darin nicht mehr platz und er verliert das eine oder das andere bits (deshalb die Minus zahl)

Am Einfachsten ist wenn du die Zeile mit dem Math.Pow so umänderst


long val = Methods.HexToDec(instanz);
long intvalue = val * val; //Quadriert den Key als Dezimalzahl

PS: int kannst du in diesem Fall nicht nehmen das das nur ein 32Bit Integer ist welcher für diesen Zweck zu klein ist
long ist ein 64 Bit Integer (also Int64)

Gruß
Michael

02.04.2011 - 22:40 Uhr

Hallo C#ler,

debugge mal durch den Code und guck nach wo sich der Fehler einschleicht.
Setze einfach ein paar Break-Points und guck was die Variablen für Werte, haben dann kannst du den Fehler sicher lokalisieren

Gruß
Michael

01.04.2011 - 23:54 Uhr

Hallo talla,

Sie sind nicht nur sowas wie, sondern sie sind eindeutig standard und immer 0 basiert in C# und .Net

Naja das sowas wie war nicht so optimal gewählt von mir 😃

Ich wollte damit nur sagen dass es in der weiten Programmier-sprachen Welt meistens die 0 basierten Arrays gibt.

Aber bei manchen exotischen Programmiersprachen (z.B. Smalltalk) sind die 1 basiert

Über sowas brauch man eigentlich gar nicht diskutieren 😃

Wirklich viel kann man da auch nicht diskutieren 😉

Greetz

01.04.2011 - 23:42 Uhr

Hallo mirus,

willkommen bei myCSharp.de

Also das erste Element im Array wird so gut wie nie frei gelassen.
Das macht auch wenig Sinn

Denn 0 basierte Arrays sind sowas wie ein Standard.
Deshalb ist das jeder Programmierer gewohnt und denkt gleich schon richtig.

Wenn du 0 freilässt dann hast du unter anderem das Problem dass Length (die Länge vom Array) nicht mehr stimmt.
Die Befehle wie Sum / Avg usw. funktionieren nicht mehr wie gewünscht usw.

Also ich kann dir nur empfehlen die Position 0 nicht auszulassen.

Gruß
Michael

01.04.2011 - 11:01 Uhr

Hallo zusammen,

das Ganze haben wir uns sehr gut überlegt bevor wir es beschlossen haben.
Natürlich klingt das automatische Schließen absurd, aber wir haben das in einer Teamsitzung ausführlich diskutiert und beschlossen dass es einen Mehrwert für das Forum bringt.

Diese Funktion sollte doch aber eigentlich nicht für das Forum Smalltalk gelten, oder? Dort werden in der Regel wenige bis keine Grundlagenfragen gestellt.

Um nicht Verwirrung zu verursachen haben wir beschlossen dass wir es auf das ganze Forum ausbauen.
Sonst kennt sich kein Mensch mehr aus wenn irgendwo Threads freigeschaltet werden müssen, und in einem anderen Unterforum automatisch freigeschaltet werden.

Dadurch dass eigentlich dauernd einer der Moderatoren online ist, wird es meist nur sehr kurze Zeit dauern bis die Beiträge freigeschaltet werden.

Gruß
Michael

28.03.2011 - 22:35 Uhr

Hallo Tomot,

ich habe einen Acer Aspire 4820TG und bin damit mehr als zufrieden.
Wenn es unbedingt ein mattes Display sein muss dann wären vielleicht die Acer Travelmate was für dich
z.B. Acer TravelMate 8472TG-464G32MNkk TimelineX Core i5-460M GT330M

Da gibt es viele ähnliche Modelle (guck dich einfach mal um)
Die Akkulaufzeit ist bei den Timeline Modellen auch Klasse. Meiner hält unter normaler Belastung locker 6 Stunden durch.
Und wenn man richtig damit Arbeitet (mit hellem Display usw.) dann hält sie 4 Stunden

Ich bin mit meinem Notebook jedenfalls mehr als zufrieden

Gruß
Michael

25.03.2011 - 19:18 Uhr

Hallo,

ja bei dein Tools wird das nicht so schlimm sein.
Aber die wirklich privaten Daten lege ich jedenfalls nicht darauf ab.

Für kleine Tools ist das sicher klasse, aber ich persönlich finde es für mich nur für die Dokumente sinnvoll.

Grüße
Michael

25.03.2011 - 18:55 Uhr

Hallo,

ich nutze Dropbox einfach in der Uni um Dokumente mit meinen Kollegen zu sharen.
Aber wirklich für produtive Dinge würde ich es eher nicht einsetzen.
Hast du dir die AGBs mal genau durchgelesen?
Weil da muss man ziemlich vorsichtig sein, da diese Geschichten oft einen Haken (Copyright.....) haben.

Gruß
Michael

21.03.2011 - 16:21 Uhr

Hallo,

ehm... Vielleicht ist ein DataTemplate was für dich (das je nach Typ automatisch geladen wird).

Aber was genau willst du machen? Ein bisschen mehr Details würden nicht schaden.

Gruß
Michael

17.03.2011 - 23:23 Uhr

Hallo,

du kannst es auch einfach rekursiv machen.
Erstelle dazu einfache eine Klasse die eine Liste enthält um die Chars (a,b,c,d...) zu speichern
Zudem braucht die Klasse noch eine List die Unterobjekte enthält (unterobjekte vom selben Typ)

Dann kannst du einfach Rekursiv vom Anfang des Strings starten.
Wenn du die ersten öffnende Klammer findest dann machst du einen Rekursiven Aufruf und speicherst das Resultat in deine Unterobjekte-Liste
Wenn im Rekursiven Aufruf eine schließende Klammer erreicht wird gibst du einfach die bis dahin gefundenen Buchstaben zurück

Das ist jetzt blöd so zu erklären, aber du hast sicher verstanden was ich damit sagen wollte

Gruß
Michael

17.03.2011 - 19:11 Uhr

Hallo,

das RemoteDesktop ist eigentlich ziemlich einfach zu aktivieren und auch zu verwenden.

Guck mal hier: Googlesuche nach remotedesktop howto
Es gibt da Massenweise HowTos usw.

Du musst einfach beim PC das RemoteDesktop (in den Systemeingeschaften) aktivieren.
Dem Benutzer die nötige Berechtigung geben

Und dann kannst du dich schon einfach mit den Client verbinden

Gruß
Michael

16.03.2011 - 20:59 Uhr

Hallo Edward,

WP7 verwendet SL3 und das unterstützt das StringFormat leider nicht.
Da musst du wohl einen _IValueConverter _verwenden

SL4 unsterstützt AFAIK das StringFormat. Aber ob das schon auf dem WP7 läuft kann ich dir leider nicht sagen

Gruß
Michael

16.03.2011 - 12:42 Uhr

Hallo jogibear9988,

Oder hat jemand eine gute Idee wie Ich das sonst lösen kann?

Du könntest es mal mit einen DataTrigger versuchen.
Das ist wohl die einfachste Lösung.

Hier siehst du ein Beispiel: WPF Styles and Control Templates

Gruß
Michael

15.03.2011 - 22:42 Uhr

Hallo,

die GUI kannst du nur von einem Thread bauen.
Aber das Bilder runterskalieren kannst du auch genauso in Threads auslagern.

Siehe dazu: [FAQ] Warum blockiert mein GUI?

Nur die normalen Bilder anzeigen ist für den GUI-Thread in der Regel kein Problem.
Aber wenn er durch das Skalieren auch noch blockiert wird dann hängt er sich immer mehr auf

Gruß
Michael

15.03.2011 - 22:37 Uhr

Hallo Leute,

für die die es noch nicht wissen:
Heute wurde die Final Version vom IE9 veröffentlich

Internet Explorer 9 - Das Internet neu erleben

Gruß
Michael

15.03.2011 - 19:40 Uhr

Hallo Fr3dd1,

entweder du machst es per Code wie von GG71 gesagt, aber dann hast du ein Problem dass du die MVVM-Regeln brechen musst.

Oder du machst es über ein AttachedProperty was IMHO der schönere Weg wäre.
Siehe: ListBox automatically scroll CurrentItem into view

Der Post in meinen Blog beschreibt wie man es erreichen kann dass in der ListBox immer das CurrentItem der ObservableCollection im sichtbaren Bereich ist.
Das ist doch das was du willst oda?

Gruß
Michael

14.03.2011 - 19:55 Uhr

Hallo Wolf86,

was verstehst du unter "einen Thread mehrmals aufrufen"?

Wenn du einfach vermeiden willst dass du jedes mal einen neuen Thread erstellen musst dann kannst du den ThreadPool verwenden.
Das ist ohnehin der empfohlene Weg da es schneller ist als einen neuen Thread zu erstellen.

Die Methode ThreadPool.QueueUserWorkItem ist deine Methode

Gruß
Michael

14.03.2011 - 13:20 Uhr

Hallo weeska,

ja das DataTemplate bzw. HierarchicalDataTemplate ist ein Weg.

Du könntest es auch mit dem DisplayMemberPath machen.
Dieser ist perfekt wenn du nur einfach eine Eigenschaft des Objektes anzeigen lassen willst.

Gruß
Michael

14.03.2011 - 12:27 Uhr

Hallo weeska,

willkommen bei myCSharp.de

Du hast einfach den String an den TreeView gebunden.
Ein String ist eine Zeichenkette (Liste von Chars) und der Treeview hat jedes Element in der Liste einzeln angezeigt.

Es macht aber auch recht wenig Sinn einen String an den TreeView zu binden.
Verwende da besser eine ObservableCollection<String> um eine Liste von Strings an den Treeview binden zu können.
Dann müsste das auch richtig angezeigt werden.

Gruß
Michael

08.03.2011 - 11:12 Uhr

Hallo,

ich entwickle auch Parallel manchmal was in Java (werde in der Uni dazu gezwungen 😉 )

Der Umstieg ist nicht so schlimm. Klar, man muss erst die Klassen kennenlernen aber die meisten Sachen sind sehr ähnlich.
Und gerade die Android Apps haben doch schon Ähnlichkeiten mit WPF.
Es ist zwar um längen nicht so flexibel, aber für Android Apps langt das schon.

Also der Umstieg wird dir IMHO nicht schwer fallen.
Das was ich am meisten vermisst habe war das Visual Studio 😃

Gruß
Michael

06.03.2011 - 21:29 Uhr

Hallo TinaQ,

Im catch-Block jeder Methode werfe ich eine Exception (je nach Fehler).

Am Ende der Anwendung möchte ich die geworfenen Exception in einer Messagebox anzeigen.

Du kannst die Exceptions doch einfach abfangen. Wenn du im Catch-Block bist dann kannst du die Exception ausgeben (z.B. in deine MessageBox)

Wenn du es erst bei Programmende ausgeben willst dann kannst du dir die Exception anstatt diese auszugeben einfach in eine Liste speichern und diese dann am Programmende ausgeben.

Aber was genau willst du denn damit erreichen? Das klingt alles irgendwie etwas eigenartig.

Gruß
Michael

06.03.2011 - 14:07 Uhr

Hallo,

was genau ist denn das Problem?
Was klappt nicht, bzw. was hast du schon versucht?

Im Compact Framework kannst du auch Socketverbindungen aufbauen oder auf einen Webservice zugreifen.

Was willst du denn überhaupt machen?

Guck mal hier: Netzwerke und Konnektivität in .NET Compact Framework

Gruß
Michael

05.03.2011 - 15:03 Uhr

Hallo daniel,

Hm. Das ist ein eigenartiges Problem...

Machst du zufällig in deinem Items-Objekten irgendwelche komischen Dinge im Setter von einer der Eigenschaften?

Kannst du das Problem auch auf ein minimales Projekt reproduzieren?

Gruß
Michael

05.03.2011 - 15:01 Uhr

Hallo p66y,

Ich binde die GUI direkt an die Datenbank

Naja, direkt an die Datenbank wirst du dein Programm wohl kaum binden können.
Es muss immer in ein lokales Objekt gemappt werden um gescheit damit arbeiten zu können.

Ich binde die GUI an ein Objekt. Wenn ich das richtig sehe, müsste dieses Objekt dann aber auch eine Update() Methode bereitstellen, welche etwaige Änderungen zurück in die DB schreibt, richtig?

Das klingt schon besser. Aber das brauchst du nicht alles selbst zu machen, denn da gibt es schon einige Dinge die diese Arbeit erleichtern.
Stichwort: OR-Mapper (oder als Alternative ADO.NET)

Am einfachsten ist es wohl wenn du das Entity Framework verwendest.
Hier findest du ein nettes Beispiel-Video: How Do I: Get Started with Entity Framework in WPF Applications?

Gruß
Michael

01.03.2011 - 20:15 Uhr

Hallo,

das Problem ist vermutlich dass du die Query mit einer einfachen Stringverkettung erstellst.
Wenn du einen Beistrich in der Query hast dann gibt es das Problem.
Denn die Zahlen müssen mit einem Punkt als 100ender Trenner eingefügt werden.

Um der ganzen Misere zu entgehen ist es empfehlenswert die SQLParameter zu verwenden.

Gruß
Michael

01.03.2011 - 14:10 Uhr

Hallo,

was genau ist denn der Grund weshalb du die UserControls freigeben willst?
Ich habe jetzt nicht genau verstanden was bei dir das Problem ist, aber vermutlich musst das Control wieder neu in der GUI hinzufügen.

Aber das ist kein guter / normaler style.... Was genau willst du denn erreichen?

Gruß
Michael

28.02.2011 - 16:14 Uhr

Hallo,

Hauptproblem ist wahrscheinlich, dass ca. alle 300 us neue Daten zum Anzeigen hinzukommen.

Das ist ziemlich sicher ein Problem
Zudem kann kein Mensch der Welt so schnell sehen.
Deshalb ist es besser wenn du die Daten zwar alle 300us reinbekommst aber diese nur in einem Intervall anzeigst.

D.h. du aktualisierst die GUI nur einmal in der Sekunde.
Ansonsten hängt sich der GUI Prozess früher oder später auf

Gruß
Michael

25.02.2011 - 11:52 Uhr

Hallo,

ich habe das Bild so in den ByteArray umgewandelt.


public static BitmapImage ToBitmapImage(this Byte[] bytes)
    {
      try
      {
        var stream = new MemoryStream(bytes);
        var image = new BitmapImage();
        image.BeginInit();
        image.StreamSource = stream;
        image.EndInit();
        return image;
      }
      catch (Exception ex)
      {
        Debug.WriteLine("Can not convert the byte array into a BitmapImage. " + ex.Message);
        return new BitmapImage();
      }
    }

    public static Byte[] ToBuffer(this BitmapImage imageSource)
    {
      Stream stream = imageSource.StreamSource;
      Byte[] buffer = null;
      if (stream != null && stream.Length > 0)
      {
        using (var br = new BinaryReader(stream))
        {
          buffer = br.ReadBytes((Int32)stream.Length);
        }
      }

      return buffer;
    }

Du könntest das Bild aber auch direkt schicken. D.h. du schickst einfach den Byte Array der Datei und arbeitest dann mit diesem.

Gruß
Michael

24.02.2011 - 21:36 Uhr

Hallo,

ich habe sowas auch vor kurzem gemacht.
Dazu habe ich einfach das Bild als Byte-Array verschickt und das funktioniert ohne Probleme.

Warum kriegst du es denn nicht in den Array gepresst?

Gruß
Michael

22.02.2011 - 13:34 Uhr

Hallo Yheeky,

ich würden den Server nie zuhause laufen lassen.

Wenn man berechnet was einen schon der Strom kostete (wenn einen starken Server hat).
Zudem hast du nur eine limitierte Bandbreite und das Ganze ist nicht so ausfallsicher.

Es ist wahrscheinlich besser wenn du dir einen Rootserver / V-Server mietest.
Da kommst du auch schon mit 15€ im Monat durch und du hast vollen Zugriff auf den Server.
Kannst installieren und tun und lassen was du willst.

Guck mal hier: Giga-hosting.biz V-Server
Diese Server haben IMHO ein recht gutes Preis-Leistungsverhältnis

Wenn du unbedingt den Server zuhause laufen lassen willst dann kannst du dir mal DynDns angucken. Damit kannst du von aussen mit dem DNS-Namen auf den Router zugreifen. Über Portforwarding kannst du bei diesem dann die Anfragen an einen bestimmten PC im Netz weiterleiten (in deinem Fall an deinem Server)

Gruß
Michael

20.02.2011 - 15:47 Uhr

Hallo,

ja, der Code ist schon nicht wirklich gut strukturiert, aber das eignet man sich schon mit der Zeit an.

Die AND - Verknüpfung kann ich doch nur machen, wenn alle Felder ausgefüllt sind. Ansonsten wird das doch ein Spaghetticode mit den ganzen Vorabfragen

Ja das wird es. Du könntest die Abfrage evtl. in eine extra Methode auslagern, aber das ist dann immer noch etwas Spaghetticode 😃

Da müsste man schon das ganze Programm umstrukturieren

Gruß
Michael

20.02.2011 - 15:27 Uhr

Hallo,

also ich verwende meist das .NET Konfigurationsmodell dann brauch ich mich darum nicht kümmern.
Und wenn ich sonst noch was habe dann hau ich das auch in den AppData Ordner

Gruß
Michael

20.02.2011 - 15:16 Uhr

Hallo kbert,

Weiß da jemand was falsch läuft?

Ich vermute mal dass du da die 100% / 0% stehen hast weil du den ganzen Thread blockierst.
Du gibst mit der while-Schleife mit voller Rechenleistung den Wert aus ohne Pause

Verwende für die Ausgabe einen Timer, dann sollte das Problem gelöst sein.
Generell siehe: [FAQ] Warum blockiert mein GUI?

Gruß
Michael

20.02.2011 - 15:11 Uhr

Hallo Tott666,

erstellst du die Datei manuell? Das ist nicht nötig.
Siehe: [Tutorial] Das neue Konfigurationsmodell im .NET Framework 2.0

Dabei wird die Settings-Datei automatisch irgendwo abgelegt (unter Dokument/...../AppData)

Gruß
Michael

20.02.2011 - 15:08 Uhr

Hallo,

willkommen bei myCSharp.de

Du kannst in SQL auch mehrere Vergleiche in der WHERE-Clause machen.
D.h. du kannst sie mit OR bzw. AND kombinieren.

In deinem Fall musst du einfach checken ob der User was in dem Betreffenden Feld eingegeben hat. Wenn ja, dann fügst du am Ende der Query noch ein " AND MeinFeld='MeinWert'" dazu

PS: Anstatt die Abfrage mit + zusammenzufügen ist es besser die SqlParameter zu verwenden.
Damit bist du sicher dass du kein Opfer von SQL-Injection wirst

Gruß
Michael

20.02.2011 - 15:05 Uhr

Hallo,

der Timespan ist wie der Name schon sagt eine Zeitspanne.
Aber du brauchst in deinem Fall vermutlich einen einfachen Datums / Zeit wert

Versuch mal einfach den DateTime Typ anstatt des Timespans zu verwenden

Gruß
Michael

18.02.2011 - 22:48 Uhr

Hallo dahaack,

willkommen bei myCSharp.de

Kurz gesagt vergleicht der == Operator ob es die gleichen Objekte sind.
D.h. Ob der Verweis auf ein und das selbe Objekt geht.
Dabei werden die Werte des Objekts nicht verglichen, es wird nur auf den Verweis geschaut.
Da das in der Regel für die meisten (veränderbaren) Datentypen genau das selbe ist braucht man es nicht zu überschreiben

Beim Equals hingegen werden normalerweise die einzelnen Properties gegeneinander abgeprüft.
Damit kannst du dann feststellen ob zwei Objekte den selben Inhalt haben.
Und wenn du dir selbst deine Objekte machst, dann musst du es halt überschreiben um deine eigene Equals-Funktion zu haben

Also kurz gesagt == vergleicht nur den Verweis (außer bei unveränderlichen Typen) und Equals vergleicht normalerweise den Inhalt (man kann es aber auch auf andere Art und weiße implementieren, was aber nicht empfehlenswert ist =)

Gruß
Michael

16.02.2011 - 19:55 Uhr

Hallo Sebastian1989101,

dafür sind Liste gut geeignet.
D.h. du hast deine Elemente (wo du vorher nicht weißt wie viele es sind) und bindest diese an ein ItemsControl.

Damit kannst du dann auf deinem View die Elemente schön anzeigen ohne vorher die genaue Anzahl zu kennen

Hier siehst du wie du das ItemsControl verwenden kannst WPF: Example of ItemsControl bound to an ObservableCollection

Gruß
Michael

14.02.2011 - 21:02 Uhr

Hallo,

und wieso willst du überhaupt schlafen?
Entweder du verwendest dafür einen Timer oder du verwendest dafür einen Timer =)
Damit kannst du Aufgaben in einem bestimmten Intervall aufrufen lassen

Zum Thema freeze siehe: [FAQ] Warum blockiert mein GUI?

Gruß
Michael

14.02.2011 - 20:58 Uhr

Hallo,

jetzt hab ich es auch verstanden, danke 😃

Also du musst auf eine Änderung in der ComboBox reagieren und dann in deiner Tabelle den Wert reinschreiben.
Wenn du die ObservableCollection verwendest dann kannst du darüber mitbekommen wenn sich das CurrentItem ändert.

Hier mal ein Stück Beispielcode dazu


public class MainWindow
{
public MainWindow()
{
   Persons = new ObservableCollection<Person>();
   var a = CollectionViewSource.GetDefaultView(Person);
   a.CurrentItemChanged += (obj,e) =>
          {
               //Das Item hat sich geändert. Den Wert hinschreiben wo du willst
          }

   DataContext = this;
}


public ObservableCollection<Person> Persons{get;set;}
}


<ComboBox ItemsSource="{Binding Persons}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name_Person" />

Keine Garantie => da nur hier schnell runtergeklopft

Wenn du mit der Tabelle2 ein einfaches WPF Control meinst dann kannst du es auch direkt mit DataBinding machen. Also {Binding Persons.CurrentItem}

Gruß
Michael