Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von DeveloperX
Thema: WPF vs. WP7: ObservableCollection
Am im Forum: GUI: WPF und XAML

Hi Jack30lena!

Danke für die Hilfe - nun klappts anscheinend.
Habe jetzt für die Library je eine Projektdatei für WP7 und eine für WPF (mit unterschiedlichen Referenzen auf die jeweiligen Standard-Assemblies) jedoch die CodeFiles nur einmalig (beim Hinzufügen eines File muss ich dann wohl das andere Projektfile entsprechend ergänzen).

Zumindest für die ObservableCollection kompiliert es fehlerfrei und läuft auch wie erwartet.

Danke nochmals!
lg

Thema: WPF vs. WP7: ObservableCollection
Am im Forum: GUI: WPF und XAML

Hi zusammen!

Ich möchte eine Windows Phone 7 App schreiben und parallel dazu eine WPF-Anwendung.
Nach altbewährtem Vorgehen wollte ich hierzu eine Test.Lib-Library erstellen in dem die ViewModels bzw. BusinessModels drinstecken und dann diese Library in der WP7- sowie WPF-App einbinden und auf dieses Objekte Databinding machen - sollte im Prinzip ja kein Problem sein.

Nur ist es halt so, dass ich in der Test.Lib-Library eine ObservableCollection<T> verwenden möchte.
Und nun das Problem: die beiden Apps verwenden unterschiedliche Assemblies in denen diese Klasse definiert ist (WPF: WindowsBase / WP7: System.Windows) was beim Kompilieren zu einem Fehler führt (in der WPF-App):

The type 'System.Collections.ObjectModel.ObservableCollection`1<T0>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. <mypath>\WpfTestApp\MainWindow.xaml.cs 34 13 WpfTestApp


Wie kann ich nun die Library auf einen gemeinsamen Nenner bringen ohne für jedes der 2 Applikationen separate ViewModels (inklusive ObserableCollection) erstellen zu müssen?

LG

Edit:
Habe gerade gesehen, dass beim Kompilieren noch ein Warning kommt:
Warning 3 The project 'TestApp.Lib' cannot be referenced. The referenced project is targeted to a different framework family (Silverlight)

Also wird das was ich vorhabe wohl gar nichts funktionieren oder wie darf ich das verstehen? Wäre ja sehr schade und irgendwie unsinnig.

Wäre für Hilfe sehr dankbar :-)

Thema: [Gelöst] ListView, dass zuletzt hinzugefügt Item anzeigen.
Am im Forum: GUI: WPF und XAML

Hi,

Habe mich gerade etwas damit auseinandergesetzt und bin zur Erkenntnis gelangt, dass es mit dem VirtualizingStackPanel (welches von der ListView standardmäßig verwendet wird) zu tun hat: Dabei werden die Container nämlich nicht sofort sondern erst bei Bedarf erzeugt und führt daher gelegentlich zu den Null-Referenzen bei GetContainerFrom...()-Aufrufen.

Du müsstest auf StatusChanged vom ContainerGenerator reagieren und wenn dieser fertig ist, kannst du die GetContainer-Methoden aufrufen sowie dann BringIntoView().



void _list_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
	listview.ItemContainerGenerator.StatusChanged += new EventHandler(ItemContainerGenerator_StatusChanged);
}

void ItemContainerGenerator_StatusChanged(object sender, EventArgs e)
{
	if (listview.ItemContainerGenerator.Status == System.Windows.Controls.Primitives.GeneratorStatus.ContainersGenerated)
	{
		((ListViewItem)listview.ItemContainerGenerator.ContainerFromIndex(listview.Items.Count - 1)).BringIntoView();
		listview.ItemContainerGenerator.StatusChanged -= new EventHandler(ItemContainerGenerator_StatusChanged);
	}
}

So funktionierts bei mir.

lg

Thema: [Gelöst] ListView, dass zuletzt hinzugefügt Item anzeigen.
Am im Forum: GUI: WPF und XAML

Zitat von Hurby
dafür hat das ListViewItem eine eingebaute Methode:


ListView.Items[Index].EnsureVisible();
//edit: hmm da war ich wohl etwas vorschnell, ich hab das so in einer formanwendung drin. warum gehts das denn bei WPF nicht???


ListView.Items[Index].BringIntoView();

Habs zwar nicht getestet, aber laut Doku scheints das zu sein.

mfg

Thema: Suche .NET Wallpaper
Am im Forum: Smalltalk

Hi,

Hier: http://wstaylor.deviantart.com/art/Microsoft-Special-Systems-Pack-116487321

lg

Thema: XAML: 2 Propertys abfragen um TabItem Hintergrund zu setzen
Am im Forum: GUI: WPF und XAML

Hi,

Hilft dir vielleicht ein MultiTrigger, der die beiden Properties enthält, weiter?
MultiTrigger-Klasse

lg

Thema: Der Typ "object" kann nicht implizit in "System.Data.SqlServerCe.SqlCeParameter" konvertiert werden.
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

Da ist ganz einfach: Eine Zuweisung hat als "Ergebnis" immer den Wert und Typ, welcher zugewiesen wurde.

SqlCeParameter[] param = new SqlCeParameter[] { new SqlCeParameter("@user_Name", SqlDbType.NVarChar).Value = stringArr[0] };
Hier machst du eine String-Zuweisung, was als "Ergebnis" eben einen String liefert. Und String is nicht konvertiertbar in SqlCeParameter.
Du solltest die Value-Zuweisung also bereits vorher machen.

lg

Thema: Ist Interface implementiert?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi!

if (control is <Interface>)

lg

Thema: Tipp für Tabellennamen
Am im Forum: Datentechnologien

Zitat von JuyJuka
Hallo DeveloperX,

Platzhalter in SQL-Queries sind schlecht (Sql-Injection und so)

schon klar, aber so wie ich es verstanden habe, werden die Tabellen-Namen ja nicht vom Benutzer eingeben, sondern aus einer hardcodierten Werteliste entnommen. Von daher ist SQL Injection nicht das Problem.

Das mit dem Platzhalter vs. {0}, {1}:
Wäre eigentlich so gemeint, dass er ja ein Dictionary<string, string> für Programm-interne-Bezeichnung / wirklicher SQL-Tabellenname verwenden könnte. Da klappts halt dann doch nicht mit {0}. Aber ansonsten ist die {0}-Variante besser, da muss ich dir recht geben.

Thema: Tipp für Tabellennamen
Am im Forum: Datentechnologien

Hi,

Vielleicht hilft es dir ja schon, wenn du einen Platzhalter (z.B. "%%USER_T%%") in deinen SQL-Strings verwendest und diesen dann durch den richtigen Tabellennamen ersetzt:

string USERS_T = "Users";
...
string sql = "select a, b, c from %%USERS_T%% where a = ...";
sql = sql.Replace("%%USERS_T%%", USERS_T);

Das ganze noch in ein Dictionary verpackt und schon gehts für verschieden Tabellen.

lg

Thema: Neues .NET Logo!
Am im Forum: Szenenews

Hi,

Zitat von Golo Roden
Dass das Logo einem N ähnelt, stimmt schon, nur war es IIRC eine Aussage von MS, dass es eine Welle symbolisieren soll - und da frage ich mich halt schon, was .NET bitte mit einer Welle zu tun haben soll?
Zitat vom verlinkten Blog:
Zitat
The result is a design we refer to as the “wave.” The design is strong, simple and distinctive. The suggestion of the letter ‘N’ in the design will become instantly recognizable over time as shorthand for the .NET brand name.

War also wohl beides beabsichtigt: Welle und 'n'.

lg

Thema: Testen ob User Password Richtig ist
Am im Forum: Rund um die Programmierung

Hallo!

Ein Konstruktor von DirectoryEntry nimmt als Parameter Benutzername und Passwort. Vielleicht genügt es zu versuchen so ein DirectoryEntry-Objekt zu erstellen.

LG

Thema: LinearGradientBrush unerklärlicher Rahmen
Am im Forum: Grafik und Sound

Hallo!

Das liegt daran, dass der GradientBrush bei z.B. x=101, das Rechteck aber bei x=100 steht. Also einfach beim Erzeugen des GradientBrushes bei der x-Koordinate 1 dazuzählen.

mfg

Thema: Designfrage: Tabellen mit Historie
Am im Forum: Datentechnologien

Hallo Berian!

Ich würde nur eine Tabelle erstellen und eine Spalte "GültigAb" hinzufügen. Damit kannst du gezielt nach einer Version zu einem bestimmten Datum abfragen.

Natürlich muss du halt dann bei allen Select die "GültigAb"-Spalte berücksichtigen (gültig ist die, die am nähesten zum aktuellen Datum ist).

Die restlichen Datensätze kannst du dann auch unverändert lassen.

Zu deiner 2. Variante: Hier müsstest du jedesmal ein delete bzw. update der Tabelle mit den aktuellen Versionen machen und zusätzlich noch ein Insert in der Archiv-Tabelle. Würde ich nicht empfehlen, da du dann sehr aufpassen musst.

mfg

Thema: Unis / FHs an denen C# verwendet wird?
Am im Forum: Smalltalk

Hallo!

Doch, es gibt eine einzige Vorlesung/Übung in der mit C# gearbeitet wird: "Einführung in die Informatik" aus dem Elektrotechnik-Studium. Ein Bekannter von mir hat das gehabt ... aber selbst mach ich auch Softwareentwicklung Wirtschaft

Thema: Überladene Methode soll automatisch BasisMethode aufrufen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo!

Du könntest die eigentliche Methode aus der Basis-Klasse implementieren und eine zusätzliche (protected) Methode anbieten, die überschrieben werden kann. Und diese rufst du halt dann aus der eigentlichen Methode auf.

  public class FooClass
  {
    public FooClass()
    {
    }

    public void TestMethod()
    {
      MessageBox.Show("FooClass");
      InternalTestMethod();
    }
    virtual protected void InternalTestMethod() {};
  }


  public class DummyClass : FooClass
  {
    public FooClass() : base()
    {
    }

    override protected void InternalTestMethod()
    {
      MessageBox.Show("DummyClass");
    }
  }

lg

Thema: Quere benutzung
Am im Forum: Rund um die Programmierung

nochmal:

Zitat von blackcoin
... meinst Du vieleicht 'Queue'



mfg

Thema: Class Diagramm
Am im Forum: Office-Technologien

Hallo!

Rechtsklick auf ein Propety: Show as Association

mfg

Thema: Theoretische Überlegungen mit 'Call by reference'
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Wenn du willst, dass die aufgerufene Method dein Objekt nicht ändern kann, musst du entweder eine Kopie oder eine ReadOnly-Variante vom Objekt übergeben (siehe dazu: Durch Get-Accessor schreiben?).
Ein Schlüsselwort wirds kaum geben, da dies bei Objekten nicht so trivial ist wie bei Wertetypen.

mfg

Thema: Durch Get-Accessor schreiben?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo!

Ich denke es geht serial eher darum, dass man das, durch das Get-Property erhaltene, Objekt verändern kann, auch wenn es nicht "ge-set-tet" werden kann.

@Serial: Durch ein Property ohne Set-Accessor ist lediglich der Verweis zum Objekt schreibgeschützt, nicht aber das (Ziel-)Objekt selbst (!).

mfg

Thema: Distanz von Punkt A zu Punkt B
Am im Forum: Rund um die Programmierung

Zitat
Original von Seikilos
Wenn n kleiner der Sektor größe ist, sind das die 8 umliegenden Sektoren, ...
Nicht unbedingt: Wenn nämlich der Kreis-Mittelpunkt ziemlich weiter links unten in einem Quadrat ist, dann können es auch weniger sein (z.B. für n = 0.75*Sektorgröße).

Eine Lösung hab ich zwar leider nicht, aber vl. hilft dir ja folgende Überlegung weiter:
- Wenn n zwischen e1 (Strecke zwischen Kreismittelpunkt und Eckpunkt der am wenigsten weiter vom Kreismittelpunkt entfernt ist) und e1 (Strecke zwischen Kreismittelpunkt und Eckpunkt der am weitesten vom Kreismittelpunkt entfernt ist) ist, dann ist der Kreis im Sektor, ansonsten nicht
- Optimierung: z.B. Im linken-oberen-Viertel ist der linke-obere-Eckpunkt am weitstens entfernt (e2), der rechte-untere am wenigsten weit (e1) -> analog für die 3 anderen Kreis-Viertel
- Du brauchst nicht alle Segmente innerhalb es "umgeschriebenen Rechtsecks" prüfen: es reicht wenn du dir das 1. Segment mit Kreis irgendwie ausrechnest (z.B. suchst du dir den, der in der gleichen Reihe, aber rechts vom Mittelpunkt ist [kann man noch weiter optimieren, wenn du 'n' in die Berechnung miteinbeziehst]). Wenn du eines hast, brauchst du immer nur die links, rechts, oben und unteren Segmente prüfen. Wenn eines davon ebenfalls ein Kreis-Segment beinhaltet, prüfst du wieder links,rechts, unten und oben => Rekursion.


Kleines Bsp. zum besseren Verständis:

Vom Kreis-Mittelpunkt einfach bei der X-Koordinate 'n' dazuaddieren -> Somit weisst du, in welchem Segment mit sicherheit ein Kreis-Teil liegt (dazu brauchst du die Modulo-Operation). [Segment 16]

Jetzt prüfst du das linke Segment [15]mittels oberen beschriebenen Verfahren -> Keine Segmetn mit Kreis-Teil
Das rechte Segment [17] ist ebenfalls kein gesuchtes Segment
Das obere [10] ist eines. Also prüfst du ab dort weiter:

links [9] ist eines -> von dort aus weiterprüfen ...
rechts [11] ist keines
oben [3] st eines -> von dort ebenfalls weiterprüfen ...
unten [16]: ist bereits bekannt, dass es ein gesuchtes Segment ist -> dort nicht mehr weiterprüfen

usw.



mfg

Thema: Suche Icon für ToolStrip
Am im Forum: GUI: Windows-Forms

Hallo!

Siehe FAQ: [FAQ] freie Icons

mfg

Thema: Mathematische Funktion während der Laufzeit eingben
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo!

Du suchst in etwa sowas:
http://www.codeproject.com/vb/net/math_expression_evaluator.asp
http://www.codeproject.com/cpp/MathieuMathParser.asp

mfg

Thema: Binär-Dateien mit unterschiedlichen Versionen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen!

Ich habe mehrere voneinander abhängige Klassen, die prinzpiell nur lesend verwendet werden können (internal Konstruktor, internal set-Accessoren, geben nur ReadOnly-Collections zurück). Dies muss zwinged so sein.

Nun entwickle ich gerade eine Art Editor dafür, der per Reflection das alles ändern kann. Im Editor kann man das ganze dann binär serialisieren (XML kann man ja nur serialisieren, wenn man public Set-Accessoren usw hat) und die serialsierte Datei in einem anderen Programm öffnen.

Soweit so gut. Aber nun fangen die Probleme an: Da die Klassen-Bibliothek bei weitem noch nicht fertig ist, kann ich natürlich keine Binär-Dateien aus vorhergehenden Versionen laden.

Wie umgeht man ein solches Problem? Einen Konverter für Version A nach Version B schreiben? Währe wohl ziemlich aufwändig bzw. beim momentanten Stand der Entwicklung mit mind. eben so hohem Aufwand verbunden wie das Implementieren der ganzen Klassen-Bibliothek mit Editor.

Für Hinweise und Anregungen wäre ich sehr dankbar!

mfg
DeveloperX

Thema: Ini-Datei-Klasse
Am im Forum: .NET-Komponenten und C#-Snippets

Zitat
Original von Beauty
ändern zu


if ((line[0].ToString() == "#") || (line[0].ToString() == ";")) continue;// Kommentar

und das widerrum ändern zu:


if ((line[0] == '#') || (line[0] == ';')) continue;// Kommentar



mfg

Thema: Listbox und ListboxItem
Am im Forum: GUI: Windows-Forms

Hallo!

Bei der ListBox fügt du einfach in die Items-Collection ein Objekt hinzu. Um an den Text zu gelangen, ruft die ListBox die ToString()-Methode des Objektes auf.

Du kannst also jedes beliebige Objekt in einer ListBox darstellen.

mfg

Thema: Tag-Attribut missbrauchen die feine englische Art?
Am im Forum: GUI: Windows-Forms

Hallo!

Das Tag-Property ist genau dafür da, dass man zu einem Control ein Objekt dazuspeichern kann, um z.B. später festzustellen, welches Objekt sicher ändern muss, wenn das Control sich geändert hat.

mfg

Thema: Aus fertigem Code Klassendiagramme erzeugen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Du kannst aber die Abhängikeiten anzeigen lassen: Bei den Properties Rechtsklick "Show as Association".

Desweiteren werden noch Erberungshierarchien und Interface-Implementierungen angezeigt.

mfg

Thema: [gelöst] Quizfrage: was ist schneller "if" oder "?"
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Golo!

Hier sind die Codes:

        static void TestIf(int x)
        {
            int y;
            if (x == 1)
            {
                y = 2;
            }
            else
            {
                y = 3;
            }
        }
        static void TestTri(int x)
        {
            int y;
            y = x == 1 ? 2 : 3;
        }
MSIL:
.method private hidebysig static void  TestIf(int32 x) cil managed
{
  // Code size       23 (0x17)
  .maxstack  2
  .locals init ([0] int32 y,
           [1] bool CS$4$0000)
  IL_0000:  nop
  IL_0001:  ldarg.0
  IL_0002:  ldc.i4.1
  IL_0003:  ceq
  IL_0005:  ldc.i4.0
  IL_0006:  ceq
  IL_0008:  stloc.1
  IL_0009:  ldloc.1
  IL_000a:  brtrue.s   IL_0012
  IL_000c:  nop
  IL_000d:  ldc.i4.2
  IL_000e:  stloc.0
  IL_000f:  nop
  IL_0010:  br.s       IL_0016
  IL_0012:  nop
  IL_0013:  ldc.i4.3
  IL_0014:  stloc.0
  IL_0015:  nop
  IL_0016:  ret
} // end of method Program::TestIf

.method private hidebysig static void  TestTri(int32 x) cil managed
{
  // Code size       11 (0xb)
  .maxstack  2
  .locals init ([0] int32 y)
  IL_0000:  nop
  IL_0001:  ldarg.0
  IL_0002:  ldc.i4.1
  IL_0003:  beq.s      IL_0008
  IL_0005:  ldc.i4.3
  IL_0006:  br.s       IL_0009
  IL_0008:  ldc.i4.2
  IL_0009:  stloc.0
  IL_000a:  ret
} // end of method Program::TestTri

Thema: [gelöst] Quizfrage: was ist schneller "if" oder "?"
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo CongoFX!

Da muss ich herbivore rechtgeben.
Bei 10 Millionen Durchläufen ist die IF-Variante um nur 11 Millisekunden langsamer.

mfg