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

Forenbeiträge von michlG Ingesamt 3.430 Beiträge

13.01.2011 - 12:16 Uhr

Hallo,

guck mal auf den Link: [FAQ] Eigenen Event definieren / Information zu Events
Wenn du das Event auslöst dann kannst du den Sender mitgeben (meistens this).
Und genau dieses object sender, kriegst du dann auch in der GUI raus, wenn du das Event abfängst.
Du kannst aber auch in das EventArgs zusätzlich Daten packen, falls das nötig ist.

Gruß
Michael

13.01.2011 - 11:36 Uhr

Hallo jogisarge,

wie kann ich jetzt in der GUI erkennen, zu welchen Textboxen der Thread gehört ?

Wie herbivore schon gesagt hat kannst du das herausfinden indem du den sender verwendest.
D.h. der Thread gibt zurück zu welcher Textbox er gehört.
Natürlich sollte das getrennt sein (der Thread kennt die TextBox nicht) dann musst du dir halt sonst irgendwie in der GUI die Zugehörigkeit merken.
z.B. über ein Dictionary

Gruß
Michael

13.01.2011 - 09:58 Uhr

Hallo meisteralex,

ich verwende momentan die Telerik-Controls und bin damit mehr als zufrieden.
Momentan setze ich zwar nur die WPF Controls ein aber diese funktionieren echt gut, und durch die ganzen Beispielprojekte kann man auch gut nachschauen was man damit alles machen kann.

Zuvor hatte ich mal die Syncfusion Controls und die waren echt schlimm.
Ich habe da viele Bugs in den Controls gefunden welche beim Melden auch recht schnell gepatcht wurden, aber dafür haben dann andere Dinge nicht mehr funktioniert 😉

Bei den Telerik Controls ist mir bis jetzt noch kein Bug aufgefallen.
Und ich gehe mal davon aus dass die bei dein Silverlight Control eine ähnliche Qualität haben werden 😉

DevExpress hab ich mir noch nie angeguckt

Gruß
Michael

12.01.2011 - 18:27 Uhr

Hallo goldie,

was genau ist denn das Problem?
Du möchtest einfach nur dass er dir das heutige Datum anzeigt?

Dann könntest du es evtl. selbst setzen. Value = DateTime.Now??

Gruß
Michael

12.01.2011 - 18:19 Uhr

Hallo Ayke,

bei deinen Contract kannst du auch ein CallbackContract angeben.

Guckst du hier:


  [ServiceContract(SessionMode = SessionMode.Allowed, CallbackContract =typeof(INetworkingCallback))]
  public interface INetworking
  {
    [OperationContract(IsOneWay = false)]
    [NetDataContractFormat]
    object TestMethod(string message);
  }

Und dann nocht der CallbackContract


  public interface INetworkingCallback
  {
    [OperationContract(IsOneWay = true)]
    [NetDataContractFormat]
    void Foo(string message);
  }

Als Binding habe ich das NetTcpBinding verwendet.
Am Server musst du dann nur Foo aufrufen um den Callback-Mechanismus auszulösen.

Beim Client kannst du dir dann die Klassen generieren lassen.
Dann bekommst du ein Foo-Event welches durch den Callback-Mechanismus gefeuert wird

So kannst du es dann abonnieren


var endpointAddress = new EndpointAddress(_connectionUri);
var serviceBinding = new NetTcpBinding(SecurityMode.None, false);
var networkingClientCallback = new NetworkingClientCallback();
networkingClientCallback.Foo += (obj, e) =>	 {
				//Event FIRED
			 };
_networkingClient = new NetworkingClient(new InstanceContext(networkingClientCallback), serviceBinding, endpointAddress);
_networkingClient.Open();

Hinweis: Ich bin kein WCF Experte und kann dir auch nicht sagen ob das der perfekte Stil ist.
Aber ich habe es so oder so ähnlich in einem kleinen Projekt mal umgesetzt und es läuft problemlos.

Gruß
Michael

10.01.2011 - 20:43 Uhr

Hallo,

ok, das kannst du dann so erreichen How to search google and bing in c#

Gruß
Michael

10.01.2011 - 20:09 Uhr

Hallo Tossi65,

Ist ja fast Google ohne Browser.

Nicht nur fast 😉

Du kannst schon die google server befragen aber was willst du dann mit den Informationen in einem String?
Damit kann man nicht viel anfangen, und wenn du die Links hast dann musst du diese auch anzeigen um Informationen zu kriegen.

Deshalb könntest du das gleich das webbrowsercontrol verwenden

Gruß
Michael

09.01.2011 - 13:05 Uhr

Hallo jogibear9988,

du kannst den Style auch selbst ändern.
Einen der schon das Plus / Minus hat habe ich nicht auf Lager, aber hier Beispiel für ein TreeViewItem-ControlTemplate findest du ein Beispiel

Das musst du nur ein klein wenig modifizieren und das Problem ist gelöst.

Gruß
Michael

09.01.2011 - 13:01 Uhr

Hallo Thomas B,

guck dir mal das Dictionary<TKey, TValue> an.
Damit hast du dann deine Key-Value Pair wie du es brauchst.

Mit einer List ist das ganze ein Gefummel.
Wenn du einen Index aus irgendwelchen Gründen auslassen musst dann hast du bei der Liste schon ein Problem.

Gruß
Michael

08.01.2011 - 16:56 Uhr

Hallo AKNOT,

Geht die ganze Sache vielleicht einfach so schnell, dass man das Hinzukommen nicht sieht? Wie könnte man das lösen?

Das wäre schon möglich, dass es einfach zu schnell ist und somit die ganzen Einträge am Ende in einem Rutsch kommen.

D.h. Wahrscheinlich hast du hast schon alle Kombinationen gefunden bis die GUI sich neu gezeichnet hat

Wie lange dauert das suchen denn? Ganz kurz (eine Sekunde)?

Wenn da sehr viele Kombinationen innerhalb kurzer Zeit gefunden werden dann wäre es vielleicht besser wenn du diese nur zyklisch in einem Paket zurückgibst.
Dann musst du nicht jedes einzeln zur ListBox hinzufügen.

Um das zu verlangsamen könntest du im Backgroundworker in der Schleife wo du die Kombinationen suchst ein Thread.Sleep(500) einbauen und somit 500ms nach jedem Durchlauf warten.

Damit wird es langsam und du kannst du gucken ob die Einträge auch gleich kommen.

PS: Das Thread.Sleep sollte eigentlich normalerweise nicht verwendet werden, aber für solche Testzwecke kann man es schon einsetzen 😃

Gruß
Michael

08.01.2011 - 16:06 Uhr

Hallo chriscolm,

ich habe jetzt zwar nicht ganz verstanden was du erreichen willst, aber wenn du einfach an ein bestimmtes Element im Dictionary binden willst dann kannst du das mit einem IValueConverter machen.

D.h. Du bindest das ganze Dictionary und über den Converter + ConverterParameter (den String / Key den du willst) kannst du dir dann das passende Element aus dem Dictionary holen

Gruß
Michael

08.01.2011 - 15:27 Uhr

Hallo hugi,

was für Namen hättest du da gerne?
Die SSID vom WLAN?

Siehe: Get SSID of the wireless network i am connected to with c net on windows vista

Wenn du den HostName / DNS Name von deinem Rechner haben willst dann kannst du das so


string myHostName = System.Net.Dns.GetHostName();

oder so


string myHostName = Environment.MachineName;

machen.

Gruß
Michael

07.01.2011 - 23:50 Uhr

Hallo rte2k,

Ich möchte über einen Timer das Dataset aktualisieren und dann die Änderungen auswerten.

Wenn du nur die Änderungen aus der Datenbank mitbekommen willst dann ist ein Timer nicht der perfekte Weg.
Guck dir mal Sql Dependencies an, damit kriegst du über ein Event mit sobald es eine Änderung gibt. Dann kannst du die Daten neu laden.

müssen an einem Dataset Änderungen vorgenommen worden sein, um neue Zeilen aus der Datenbank-Quelle zu bekommen?

Kann ich dir nicht viel zu sagen weil ich DataSets so gut wie nie verwende..
Vermutlich musst du das manuell machen

Gruß
Michael

07.01.2011 - 23:48 Uhr

Hallo DerKölner,

willkommen bei myCSharp.de

Jetzt wollte ich ein bisschen Learning by Doing betreiben und mit C# und Forms ein Tick Tack Toe Spiel schreiben.

Damit habe ich auch angefangen 😉 Der nächste Schritt ist dann 4 Gewinnt 😃

Woran liegt das und wie kann man das beheben?

Das ist ohne weitere Details sehr schwierig zu sagen.
Kannst du evtl. etwas relevanten Code posten damit wir sehen können wo das Problem ist?

Den Debugger hast du schon verwendet, dann kann man so ohne Details nicht viel zu sagen.

Wie gibst du der anderen Klasse die Daten mit?

Gruß
Michael

07.01.2011 - 21:31 Uhr

Hallo b-oern,

oft hilft es wenn man einfach Klammern um das Binding setzt.
z.B. (Grid.Row)
Das funktioniert in diesem Beispiel nur weil man den Namespace nicht mit angeben muss.

Bei dir muss man das aber, deshalb funktioniert es so nicht.

Versuche es mal so


var title = new TextBlock();
Binding myBinding = new Binding(); 
myBinding.Path = new PropertyPath(Form.TitleProperty);
myBinding.Source = item;
myBinding.FallbackValue = "error";
title.SetBinding(TextBlock.TextProperty, myBinding);

Gruß
Michael

07.01.2011 - 17:57 Uhr

Hallo Ayke,

Kann ich vom Server auch auf Methoden vom Client zugreifen ?

Ich bin zwar auch kein WCF Profi, aber ich bin mir ziemlich sicher dass das so nicht funktioniert.

Du kannst aber sehr wohl Events am Server feuern und am Client abonnieren.

Gruß
Michael

07.01.2011 - 16:57 Uhr

Hallo,

die Thematik ob WPF oder Winforms besser ist wurde schon bis zum Abwinken diskutiert.

Siehe z.b. das hier: Windows Forms oder WPF

In deinem Fall würde ich eher sofort mit WPF starten, da es die neuere Technologie ist.

Weitere Details findest du im geposteten Thread und wenn du die Suche benutzt dann findest du auch noch einiges mehr.

Gruß
Michael

07.01.2011 - 13:43 Uhr

Hallo,

das würde aber bedeuten das es für Hardware nahe Entwicklungen (Spiele, Datenbanken usw.) es einen rießen Aufwand bedeutet...

Ich vermute mal dass ich die ARM Prozessoren wohl kaum im Spiele-bereich durchsetzen werden.
Und bei Datenbanken wird es auch nur kleine lokale Datenbanken geben.

Deshalb ist das nicht so schlimm, wenn man für sein Spiel als Voraussetzung eine x86 CPU angibt.

Gruß
Michael

07.01.2011 - 10:12 Uhr

Hallo,

Hatte alle using drin hat aber beim klicken einen Fehler geworfen.

Was war denn der Fehler?
Bitte beachte: [Hinweis] Wie poste ich richtig?

Guck mal hier: How can I give another Process focus from C#?

Gruß
Michael

06.01.2011 - 22:03 Uhr

Hallo david.ka,

das sieht so aus als wäre es einmal so ein Carousel Control.
So eines z.B. WPF Carousel um die einzelnen Kategorien untereinander anzuzeigen.

Jede Kategorie hat dann noch ein paar Funktionen.
Was wahrscheinlich nur ein ItemsControl mit einem StackPanel ist

Also du hast eine Liste von Kategorien. Und jede Kategorie hat eine Liste von Funktionen / Aktionen welche du dann einfach binden und (durch Templates) anzeigen kannst.

Gruß
Michael

06.01.2011 - 21:39 Uhr

Hallo mrbob,

das kannst du recht einfach erreichen.
Dazu musst du einfach das Class Template editieren.

Wie das funktioniert bzw. wo du das findest siehst du hier: How to modify the default new class template in visual studio 2008 / 2010

Gruß
Michael

06.01.2011 - 21:23 Uhr

Hallo steve46,

das ist das sog. RibbonControl.

Dieses wird auch in dem Office Paket seit 2007 verwendet.

Das Control müsste seit .NET 4 direkt schon mit dabei sein ansonsten findest du es im WPF Toolkit

Gruß
Michael

06.01.2011 - 18:54 Uhr

Hallo Spontifixus,

jop das hab ich schon versucht 😃
Mach ich täglich.

Nur das Fenster schütteln finde ich nicht so sinnvoll, ansonsten ist das echt klasse.
PS: Das Feature nennt sich Aero Snap / Aero peek

Siehe: Aero Verbesserungen Aero Snap Aero Peek

Gruss
Michael

05.01.2011 - 18:11 Uhr

Hallo Honkey,

um die Änderungen von der Datenquelle direkt zum DataGrid reflektieren zu können musst du eine spezielle Collection verwenden (ObservableCollection<T>).

Damit kannst du eine Liste von dienen Objekten an das DataGrid binden.
Um auch die Änderungen in einzelnen Objekten zu reflektieren muss deine Klasse noch INotifyPropertyChanged implementieren.

Gruss
Michael

05.01.2011 - 17:24 Uhr

Hallo,

ich habe mal den Equatec Profiler ausprobiert und dabei kann man beim Client auch mitprotokollieren was der macht (welche Methoden aufgerufen werden, wie lange es dauert) usw. Aber den vollen Funktionsumfang gibt es wahrscheinlich aus Performancegründen nicht.

Ich weiß jetzt nicht sicher ob es was für dich ist, aber es ist auf jedem Fall einen Blick wert: EQUATEC Profiler

Das ist zwar nicht gratis, aber wenn man berechnet was man sich an Zeit und Nerven sparen kann wenn man einen Fehler sucht, dann ist das schon gerechtfertigt.

Gruss
Michael

05.01.2011 - 13:22 Uhr

Hallo Pico1184,

Du könntest da auch einen DataTrigger verwenden.

Wie du den DataTrigger mit dem Image verwendest findest du hier: WPF settings image source from datatrigger

Gruß
Michael

05.01.2011 - 11:28 Uhr

Hallo Seiskilos,

hast du dir FindLast(Predicate<T> match) schon mal angeguckt?
Damit sollte es möglich sein

Gruss
Michael

04.01.2011 - 19:01 Uhr

Hallo Barbara,

das kannst du recht einfach über eine Berechnung machen.
Wie das funktioniert (mit Query) findest du hier: Selecting points within a bounding circle

Wenn dir die Performance zu schlecht ist, dann könntest du versuchen die Daten vorher durch das bounding rectangle zu filtern.
Damit hast du dann nur noch einen kleinen Bereich in welchem du die Kreisberechnungen machen musst

Gruss
Michael

04.01.2011 - 16:24 Uhr

Hallo Taipi88,

das sind die Tage seit dem Datum 1.1.0000

733030 = 20.12.2007
733042 = 01.01.2008

Wenn man das dann durch 365 teilt dann kommt man auf 2008,33
Was den Jahren entspricht.

Die kleine Abweichung wird durch die Schaltjahre verursacht.

Gruß
Michael

04.01.2011 - 14:45 Uhr

Hallo Ahrimaan,

dazu kannst du die ASCII Tabelle verwenden.
Einfach bei 65 anfangen zu zählen bis du die Kombination findest.
Wenn die aktuelle Länge deines Strings zu kurz ist dann hängst du hinten ein A an und machst gleich weiter.

Um aus dem Int (65) den Char (A) zu bekommen kannst du den int einfach in einen Char casten.

Gruss
Michael

04.01.2011 - 14:36 Uhr

Hallo SunB,

Das Problem ist, dass ich bei zweitem Code eine Zeilenanzahl von 250544 erhalte (diese Zahl entspricht auch der tatsächlichen Zeilenanzahl im Textfile) und bei der Methode im oberen Code nur ca. 150000 Datensätze in der Datatable habe.

Ich würde es mal für den Anfang mit die 100fache Menge probieren 😉

Probier das mal mit 50 Zeilen aus, dann kann man leichter verfolgen was da passiert.
Dann kannst du relativ einfach durch den Code debuggen und gucken wo die Zeilen verloren gehen.

Ich sehe jetzt auf den ersten Blick keinen Fehler der so etwas auslösen könnte, aber bei so riesigen Datenmengen muss man immer aufpassen.

Versuch es einfach mal mit wenigen Zeilen dann kannst du vielleicht ein Muster erkennen und den Fehler somit lokalisieren.

Bei solchen riesigen Dateien muss man es sich immer gut überlegen ob es überhaupt sinn macht alles in den Speicher zu laden und ob man sich damit nicht evtl. OutOfMemory-Exceptions einfangen kann.

Gruß
Michael

04.01.2011 - 14:10 Uhr

Hallo SunB,

was genau ist denn das Problem? bzw. welche Zeilen gehen verlohren.

Guck dir mal die File.ReadAllLines / File.ReadAllText Mehotde an.
Damit kannst du die Datei einfacher einlesen.

Gruss
Michael

03.01.2011 - 19:20 Uhr

Hallo ofbe,

kannst du das etwas genauer erklären (evtl. mit kleinem Codebeispiel).

So kann man nur raten woran es liegen kann.

Gruß
Michael

03.01.2011 - 16:39 Uhr

Hallo exaveal,

nein, deine Get-Methode ist nicht richtig.
Du kontrollierst zwar ob du im richtigen Thread bist und rufst es auch mit Invoke auf, aber du gibst dann sofort "" zurück.

Deshalb erhälst du auch immer "" zurück.

Versuche mal den Rückgabewert von sender.Invoke(...) zurückzugeben.

Und guck mal hier: [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)
Ist auch ne nette Beschreibung zu dem Thema

Gruss
Michael

31.12.2010 - 12:34 Uhr

Hallo,

ich verwende die Express Version zwar nicht, aber ich bin mir doch 99.9999% sicher dass die dort den Debugger drinnen haben.

Hier findest du ein Tutorial wie man einen Debugger benutzt: Debugging

Wenn das immer noch nix nützt dann kannst du mal ein paar Ausgaben im Code hinzufügen, damit du siehst was er durchläuft und was nicht.

Bitte beachte: [Hinweis] Wie poste ich richtig? 1.1 und 1.1.1

Gruss
Michael

31.12.2010 - 12:18 Uhr

Hallo,

Wie würdest du denn die list befüllen ? Bräuchte da mal nen kleinen Anstoß 😃

Was muro richtig erkennt hat ist dass du diese xlist ausserhalb der Methode definiert hast.
Damit werden bei jedem Methodenaufruf die Elemente hinten angehängt.
Beim ersten Mal ist das noch ok, aber nachher hast du die Dinger dann Doppelt und Dreifach.

D.h. Entweder du rufst einfach Clear auf bevor du die Liste wieder befüllst oder du erstellst sie jedes mal neu.

Zudem kannst du dir die Zeile


if (x.Count() > 0)

sparen, da die Foreach-Schleife ohnehin nix macht wenn kein Element drinnen ist.

Gruss
Michael

31.12.2010 - 10:20 Uhr

Hallo hitzi,

Was für eine Erklärung gibt es dafür?

Beim Passiven FTP wird nur eine Verbindung zwischen Client und Server aufgebaut (also nur ein Port). Dabei hast du den Vorteil dass es auch funktioniert wenn der Server sich nicht zum Client verbinden kann (z.B. wenn der Client eine Firewall hat).

Beim Aktiven FTP meldet der Client sich am Server. Und dann werden zwei Verbindungen aufgebaut. Eine für die Daten und eine für die Steuerung.
Das funktioniert aber nicht wenn der Server nicht zum Client kommt.

Hier gibts Details dazu: File Transfer Protocol

Gruss
Michael

30.12.2010 - 21:43 Uhr

Das kuriose ist ja, das wenn beim ablauf die textbox sichtbar ist es funktioniert. Wenn beim SELBEN ablauf jedoch die textbox unsichtbar ist funktioniert es nicht mehr?? Also irgendwie glaub ich da is was faul 😉

Das klingt irgendwie unlogisch.. Mir fällt jetzt jedenfalls kein logischer Grund ein weshalb es nicht funktionieren sollte.

Versuch einfach durch den Code zu debuggen und stelle sicher was der Grund ist weshalb es nicht funktioniert, bzw. was nicht funktioniert.

Vielleicht schlägt diese IF-Abfrage aus einem anderen Grund fehl.

Gruss
Michael

30.12.2010 - 21:36 Uhr

Hallo Gumba,

das sollte so eigentlich schon funktionieren.
Vermutlich ist der Text in der Textbox noch nicht gesetzt wenn der Code ausgeührt wird.
Hast du schon versucht durch den code zu debuggen um zu sehen ob alle werte gesetzt sind wie sie das sein sollten?

Beim Arbeiten mit mehreren Threads gilt es immer zu beachten dass man nicht vom WOrker-Thread aus auf die GUI zugreift.
Dadurch kann es zu hässlichen Nebenwirkungen kommen ^^
Guck mal hier: [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)

Versuche einfach durch den Code zu debuggen dann siehst du schon ob alle werte stimmen.

Gruss
michael

29.12.2010 - 17:47 Uhr

Hallo

List<T>.RemoveAll hat nichts mit LINQ zu tun. RemoveAll ist eine normale Methode der List<T> Klasse.

Ehm ja, da hast du wohl recht 😃
Ich dachte es ist eine der Extension Methods

Ich persönlich finde den Einzeiler RemoveAll wesentlich sprechender, als eine for-Schleife.

Ich finde es schon auch so leserlicher, aber da er schon mit der Schleife Probleme hatte hab ich mir gedacht dass es etwas einfacher ist wenn man es so macht und nicht gleich diese mächtige Variante verwendet.
Aber das kann er dann machen wie er will.

@freundblase: Guck mal hier: List<T>.RemoveAll-Methode

Grüsse

29.12.2010 - 16:02 Uhr

Hallo,

Bei C# kann man die Liste nicht verändern, die man durch-iteriert.

Bei einer Foreach-Schleife ist das richtig.

Aber du kannst auch eine for-Schleife verwenden dann ist das kein Problem.
Du musst nur den Index um 1 verkleinern wenn du ein Element entfernst, weil sonst würdest du ein Element überspringen.

Einfacher ist es natürlich mit LINQ (wie marsgk) dir beschrieben hat.
Aber einfacher zu verstehen ist wohl die Variante mit der for-schleife 😃

Gruss
Michael

26.12.2010 - 19:32 Uhr

Hallo gijoe222,

du kannst ja einfach das CellTemplate von der GridViewColumn setzen (identisch wie beim XAML).

Um etwas aus den Resourcen zu laden kannst du **:::

Gruss
Michael

24.12.2010 - 10:20 Uhr

Hallo Leute,

ich wünsche euch auch ein frohes Fest und einen guten Rutsch
Santa und Freunde

Grüsse

23.12.2010 - 19:11 Uhr

Hallo zusammen,

da braucht man nur einen kleinen Denk / Schreibfehler machen um so eine Diskussion auszulösen 😉

Ich habe jetzt in VmWare nachgeguckt und es ist wirklich nicht möglich die MacAdresse vom host zu verwenden. Ich habe das mit dem "Connected directly to the physical network" verwechselt.
D.h. man hat direkt die Netzwerkverbindung vom host, aber ziemlich sicher eine andere MAC

Wenn man etwas nachdenkt dann ist es wirklich logisch dass das nicht funktionieren kann. Ausser Vmware würde sich da irgendwo dazwischen hängen.

Gruss
Michael

23.12.2010 - 16:54 Uhr

Hallo,

theoretisch würde es schon mit der MAC-Adresse funktionieren.
Aber diese kann man sehr leicht faken und somit vorgauckeln jemand anderes zu sein.
Ich glaube dass man in VMware beim Netzwerkadapter auswählen kann dass er die Macadresse vom Host verwenden soll.
Somit würde diese Variante schon ins Wasser fallen.

AFAIK gibt es da keine wirklich eindeutige ID.
Du könntest dir aber über die verbaute Hardware mit einem Algorithmus eine ID generieren.

Guck mal hier: Detect if your program is running inside a Virtual Machine

Gruss
Michael

23.12.2010 - 16:50 Uhr

Hallo,

meine Programme werden meistens auch auf einem Touchscreen eingesetzt.
Momentan sind das irgendwelche AllInOne-PCs mit Touchscreen und einem 20'' Bildschirm.

Normalerweise werden da dann meine Programme als Fullscreen Andwendung angezeigt. Die Programme selbst habe ich auf Touchscreens optimiert (etwas größere Buttons, usw.). Einiges (wie das Scrollen) geht schon out of the box.

Als OS dient das Win 7 was auch recht gut damit zu bediene ist.
Klar, eine Maus und eine Tastatur sind da trotzdem bei vielen Dingen praktisch aber das wird in naher Zukunft auch so bleiben.

Ein Großteil der User wird ein IPad oder Android Tablet sicher nicht produktiv einsetzen, da man durch den Touchscreen + kleinen Bildschirm viele Dinge nicht so gut machen kann wie mit der Maus.
Zudem gibt es keine / wenige Geräte die man irgendwie mit den Tablets verbinden kann. Und wenn man damit arbeitet und nicht nur spielt dann braucht man ständig irgendwelche Geräte.

Fragmentierung wurde dank Android mit zum wohl meistgenutzten Wort in der Smartphone Community - und das ist nicht positiv gemeint. Da gibts riesen Probleme. Und da bevorzuge ich erstmal nen System was auf einer Plattform so tut wie man es sich es wünscht und dann kann man das Angebot immer noch ausweiten.

Da kann ich nur zustimmen.
Ich bin ein Android Benutzer und da merkt man richtig was das Problem dabei ist.
Dadurch dass das OS auf so vielen total unterschiedlichen Geräten läuft hat man schon viele Probleme.
Viele Apps im Market funktionieren nur auf bestimmten Typen, wenn eine neue Firmware rauskommt dann dauert es eine halbe Ewigkeit bis diese vom Hersteller (HTC, Motorola usw.) freigegeben wird. Dadurch hat man extrem viele unterschiedliche Geräte mit noch mehr unterschiedlichen Firmwares

Bei meinem Smartphone (HTC Hero) wurde vor kurzem das Android 2.2 von HTC für das Update freigegeben (Google hat mittlerweile schon das 2.3er seit ein paar Monaten freigegeben).

Genau aus diesen Gründen finde ich es schon gut dass Microsoft da harte Bestimmungen hat und ihr WP7 nicht auf jedem Smartphone installieren lassen.
Und bei den Tablets ist es das selbe.

Grüsse

23.12.2010 - 16:32 Uhr

Hallo Irathindur,

versuche mal die List<T> mit einer ObservableCollection<T> auszutauschen.
Weil die ObservableCollection sagt dem ListView dass es eine Änderung gab und damit wird dieser auch aktualisiert.
Wenn du eine normale Liste verwendest dann hast du zwar den neuen Eintrag drinnen der ListView weiß aber nicht dass es was Neues gibt und aktualisiert sich nicht

Gruss
Michael

23.12.2010 - 12:24 Uhr

Hallo,

achso, bei so einem riesigen Projekt kann man nicht mal schnell das system umstellen 😃

Verschiedene Schriftgrößen sieht imho irgendwie kacke aus.
Setze eine Textblock in den Button (als Content) und aktiviere das TextWrapping.
Dann macht er dir automatisch einen Zeilenumbruch wenn der Text zu lange ist.

Gruss
Michael

23.12.2010 - 11:05 Uhr

Hallo marix,

wieso gibst du deinen Button eine fixe Größe?
In WPF kann man mit den Layoutcontainern sehr einfach eine dynamische Oberfläche bauen die sich an den Inhalt anpasst.

Beim Button kannst du evtl. einen TextBlock hinzufügen und dann WordWrapping aktivieren.

PS: Eine lokalisierung mit der Datenbank ist nicht üblich. Einfacher ist wenn du dir ResourceDictionaries für jede Sprache erstellst welche du dann on the fly austauschen kannst.
Dann brauchst du dich nicht darum kümmern dass alle Texte refresht werden da es automatisch passiert

Gruss
Michael

22.12.2010 - 22:27 Uhr

Hallo,

Dann wunderts mich nur, das der Text, den ich vorher ausgebe, auch nicht angezeigt wird.

Wenn du den Text setzst, dann wird der nicht sofort angezeigt.
Der wird auf der GUI angezeigt wenn die GUI will (normalerweise sofort).
Wenn du aber im nächsten Schritt den Thread blockierst dann kann dieser nicht mehr die GUI aktualisieren und den Text anzeigen.

Guck dir den Link [FAQ] Warum blockiert mein GUI? mal an, da ist alles genau beschrieben was das Problem ist.

Gruss
Michael