Für einen Quadtree ist es auch ganz schön, wenn er sich selbst unterteilen kann.
Ich vermute mal Du hast eine List von Geometriedaten pro Knoten. Falls die Liste zu viele Daten enthält, wird eine Methode "Subdivide" aufgerufen. Diese erstellt die 4 Kindknoten, verteilt die Geometrie auf die jeweiligen Kinder und führt das rekursiv weiter bis zu einer bestimmten Maximaltiefe.
Hi,
danke für deine Antwort.
Die Sourcen für die Dll habe ich leider nicht in der Hand , von daher wäre es der C++/CLI Wrapper...hatte aber eigentlich gehofft einen Wrapper umgehen zu können!
Gruß
Sascha
Hi,
ich habe eine SQL Abfrage über SqlDataReader den Reader lade ich in eine DataTable und die DataTable über
dg.ItemsSource = dt.DefaultView
in ein DataGrid(dg).
Mir geht es explizit um die Option vom Markieren irgendeiner Zelle, also den Inhalt der Zelle.
Bei einer SQL-Abfrage die folgendermaßen beginnt:
"SELECT t.wert, ...usw..."
funktioniert das auch.
Aber wenn ich den Inhalt der zb. ersten Spalte durch eine CASE Abfrage bestimme, wie folgt:
"SELECT (CASE WHEN f.wert IS NULL THEN p.wert ELSE f.wert2 END) AS Spaltenname, ...usw..."
funktioniert das leider nicht mehr. Ich kann keinen Zelleninhalt mehr in die Zwischenablage kopieren, komme nicht mal in die Zelle mehr rein...
Ich habe in der doku von DataGrid schon eine Eigenschaft gesucht, aber noch nichts passendes gefunden.
Hat vielleicht einer eine Idee? Wäre super!
Gruß Gustl
Edit: die Eigenschaft IsReadOnly bewirkt hier nicht, auch wenn ich diese nach der Zuweisung zur Laufzeit setze.
Kann es sein, daß die erstellte Anwendung in der Zeit auf das "intelligente Gerät" (tolles Wort überspielt wird? (So kenne ich es zumindestens bei VC-Projekten und WinCE-Geräten.) Siehst du denn unten in der Statusleiste eine Fortschrittsanzeige?
Grundlegend solltest du auf solch Geschwätz wie "Windows Forms" wird aussterben keinen Wert setzen. Das sind subjektive Meinungen der meisten Leute. Bisher hat Microsoft nicht einmal eine Andeutung in die Richtung gemacht.
Mit welcher GUI-Technologie du anfängst sollte insofern dir überlassen bleiben. Ich würde jedoch, da es wenn man es einmal verstanden hat extrem bequem ist WPF empfehlen. Gerade für Visualisierungen ist das extrem Cool.
Bei Anwendungen zur Daten-Ein/Ausgabe reicht eine kleine Forms App aber allemale. Ich handhabe das so, das ich nur in WPF umsetze, was mir Forms nicht / nur spärlich / oder sehr schwer bietet.
Hmm vielleicht uebersehe ich ja etwas aber ich kann nirgens finden wo du Position oder Length vom Stream benutzt?
Btw.: Dein Code ist EXTREM schlecht zu lesen, man brauch nicht in jeder Zeile einen Kommentar zu schreiben. Das macht die Sache naemlich unfassbar unuebersichtlich.
Weitere Tips:
1. Warum deklarierst du tmpstream schon in der Zeile 10 wenn du es aber erst in der Zeile 20 benutzt?
2. Stream ist eine Klasse welche das IDisposable Interface implementiert, wenn du solche Klassen hast dann benutz bitte die using-Bloecke.
3. Lokale Variablen werden in .NET(und auch in vielen anderen Sprachen) nicht gross geschrieben.
secondsun schrieb:
Ein BGW kommt im Moment nicht in Frage da wir mit dem Entity Framework arbeiten und das ist ja bekanntlich nicht Thread safe.
Nach dieser Logic wäre keine Applikation die das EF verwendet eine Multithread Applikation
Ich habe daheim ein EF Projekt, auf arbeit ebenso.
Und wir arbeiten mit Threads - da staunste wa
Ich habe einen WCF-Service den ich mittels "Add Service Reference" hinzufüge, inklusive der Generierung von Asynchronen Schnittstellen. An sich auch kein Problem, nur ist mir noch nicht klar wie die Benennung der erzeugten Klassen (Konkret die Bennenung der results in den von AsyncCompletedEventArgs abgeleiteten Klassen erzeugt).
Ich verwende derzeit vereinfacht MessageContracts als Rückantwort:
[ServiceContract/*...*/]
public interface IFooService
{
[OperationContract]
GetFoolisteResult GetFooliste(
GetFoolisteParameter parameter);
}
[MessageContract]
public class GetFoolisteResult
{
[MessageBodyMember]
public bool FooStatus;
[MessageBodyMember]
public IList<Foo> FooList;
}
//...
Nun generiert VS daraus eine Klasse wie in Etwa:
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
public partial class GetFoolisteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
public GetAktionAnzeigelisteCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState)
: base(exception, cancelled, userState) {
this.results = results;
}
// Manche Eigenschaften werden so benannt wie im MessageContract...
public bool FooStatus {
get {
base.RaiseExceptionIfNecessary();
return ((bool)(this.results[0]));
}
}
// ...aber eine wird immer mit Result benannt...
// Die Regel welche ist mir aber noch verborgen.
public System.Collections.ObjectModel.ObservableCollection<Foo> Result {
get {
base.RaiseExceptionIfNecessary();
return ((System.Collections.ObjectModel.ObservableCollection<Foo>)(this.results[1]));
}
}
}
Mein Problem ist einfach: Nach welchen Regeln erfolgt die Benennung, und kann man diese ggf. irgendwie beeinflussen. Laut den Rückgaben ist es immer das letzte Element in results, aber wie die Reihenfolge wiederum erfolgt ist mir schleierhaft (sie entspricht nicht der Anordnung in der entsprechenden Klasse).
Nachtrag:
Nachdem ich gedacht hatte, die Lösung über "[MessageBodyMember(Order = ...)]" gefunden zu haben, ist die Lösung wohl in meinen Fall "Allways generate message contracts" zu verwenden (Die Order hat jedenfalls keine Auswirkungen an dieser Stelle).
Das letzte Element im DockPanel nimmt den restlichen Platz.
<Window ...>
<DockPanel>
<Menu DockPanel.Dock="Top">...</Menu>
<StatusBar DockPanel.Dock="Bottom" Height="30">...</StatusBar>
<Grid >...</Grid>
</DockPanel>
</Window>
Das DockPanel geht seine Childs von oben nach unten durch.
Er fragt jedes einzelne wie Groß es sein will, und wo, dann positioniert er des.
Sobald er beim letzten Control ankommt gibt er den Child dann die restlichen verfügbaren Platz.
asc schrieb:
Wenn die Komponenten mit dem Projekt zusammen in ein Paket gelinkt werden,
Sie werden eher gepackt als gelinkt, so wie in einer *.docx Datei von Word verschiedene XML-Dateien stecken.
Die Isolation dieser Komponenten ist also eher eine Folge der Sandbox. Falls diese neue Art von COM außerhalb von Metro auftauchen sollte, dürfte das nicht mehr der Fall sein.
By the way, bald gibt es Literatur zum Thema:
http://blogs.msdn.com/b/microsoft_press/archive/2012/04/21/mark-your-calendars-programming-windows-sixth-edition-is-coming.aspx