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 Parso
Thema: WPF: Focus für OnPreviewKeyDown/KeyBindings im UserControl
Am im Forum: GUI: WPF und XAML

Hm habs mal Probiert...scheinbar "spruckt" das Bubbling drauf wenns an nem Panel hängt, sobald man das auf ein überliegendes Control legt, klappts wieder. Könntest rein theoretisch auf nen Container gehen...also ContentPresenter oder so, hab ich noch nicht probiert...müsste aber gehen...

Thema: WPF: Focus für OnPreviewKeyDown/KeyBindings im UserControl
Am im Forum: GUI: WPF und XAML

Du kannst über die InputBindings Tastenkombinationen mit einem Command verbinden, das Command kann zb in einer statischen Klasse oder deinem ViewModel hinterlegt sein:

    <Grid>
        <Grid.InputBindings>
            <KeyBinding Command="{x:Static MyCommandCollection.MyCommand}" Key="A" Modifiers="Control" ></KeyBinding>
        </Grid.InputBindings>
    </Grid>

CommandBinding war daher nicht ganz korrekt...ist immer ne Sache was man meint und was man sagt, bzw schreibt ;)

Thema: WPF: Focus für OnPreviewKeyDown/KeyBindings im UserControl
Am im Forum: GUI: WPF und XAML

Dann reicht ein einfaches CommandBinding voll aus..deine Tastaturkombi wird, wenn es vom fokusierten Control nicht ausgewertet wird, an das Parent geschickt...bis es entweder beim Fenster ankommt oder auf einen "auswerter" trifft...

Geht also auch ohne "häggerei" im Code-Behind

vg

Thema: UpdateSourceTrigger von CustomControls updatet die Datenquelle nicht
Am im Forum: GUI: WPF und XAML

Hallo,

ich frag mal ganz provokant, wieso habt ihr eine textbox in einer textbox ? das das ist eine etwas ... holprige lösung...wenn ihr ne textbox selbst macht, dann erbt doch von textbox und baut das template korrekt, dann treten solche probleme gar nicht auf (gibt n trick sich die kompletten styles per reflection aus der controls zu ziehen, gibt sicherlich einige beispiele wenn man sucht)

das selbe spielchen mit der checkbox...

Es gibt da einen unterschied, zwischen customcontrol und usercontrol, willst du ein steuerelement auf einer "atomaren" ebene so erweitern dass sich das vererben lohnt, dann vererbe. Wenn die Anforderung ein "kombiniertes" steuerelement ist, benutz ein Usercontrol.

Bei den Bindings muss man immer darauf achten, dass die Bindingkette von A nach B konsequent durchzieht...ist wie mit so domino-steinchen..das eine schubst das andere an.

In der Custom-CheckBox verwendest du einen TextBlock als Content für eine Checkbox, sowas sollte man vielleicht noch mal überlegen, das geht auf dauer stark in die performance, da du anstatt einem controll auf einmal 3 hast .. deins, die checkbox und die textbox.

wenn ihr nur bestimmte fähigkeiten eines controls erweitern wollt, könnt ihr attached properties verwenden oder behaviors, das ist wesentlich einfacher.

Noch ein kleiner Hinweis...Blend ist ein sehr gutes werkzeug für das zusammenstellen von UI's und ziemlich einfach zu benutzen, das gibt seltsamerweise viele firmen die versuchen sowas nachzuprogrammieren...sich ins programm einarbeiten geht 1000 mal schneller.

vg

Thema: WPF: Focus für OnPreviewKeyDown/KeyBindings im UserControl
Am im Forum: GUI: WPF und XAML

Hallo,

wofür brauchst du das denn ? ... du kannst das ganze auch wesentlich eleganter lösen, je nach anwendungsfall hast du verschiedene möglichkeiten.

grundsätzlich sind der logische fokus und tastaturfokus was ganz anderes, das eine ist wirklich für benutzereingaben gedacht, am logischen fokus hängt wesentlich mehr, als einfache eingaben...

du kannst mit behaviours arbeiten, bietet sich in manchen fällen an...wenn du einfach nur auf tastendruck innerhalb eines controls arbeiten willst, kannst du auch commandbindings verwenden...(bubbling/tunneling), je nach dem wie komplex dein ui-aufbau ist.

events zu abonnieren ist immer etwas "risky" ... events sind, wenn man nicht damit aufpasst, sehr schwer zu debuggen, da man mit denen ganz leicht einen zirkulären aufruf erzeugen kann, für die man wiederrum einen hack braucht um sie zu umgehen.

Thema: GridView Scrolling: Halbsichtbare Items gar nicht darstellen statt nur halb
Am im Forum: GUI: WPF und XAML

Du könntest, es wäre aber wesentlich leichter die Höhe des Controls so einzustellen, dass du keine "halbsichtbaren" elemente hast...

Thema: WPF - Binding einer DataGridComboBoxColumn in DataGrid
Am im Forum: GUI: WPF und XAML

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

Thema: [gelöst] UserControl KeyDown aktivieren?
Am im Forum: GUI: WPF und XAML

Hallo, was willst du denn mit den Key-Downs bezwecken ?

Thema: Windows Phone - Aktion ausführen beim Loslassen eines Repeatbuttons
Am im Forum: GUI: WPF und XAML

Hallihallo, das mit dem Repeat hab ich offensichtlich überlesen ;) mea culpa

Thema: XAML Validierung für Member wie bei Styles und Settern
Am im Forum: GUI: WPF und XAML

Das wird so nicht funktionieren, die Eigenschaft gegen die du reflektierst, ist vom Typ Type und entsprechend wirst du nur Eigschaften der Klasse Type bekommen.

Dafür gibt es Generics, die werden aber von WPF nicht wirklich unterstützt...leider...Ich vermisse es auch manchmal.

Thema: Windows Phone - Aktion ausführen beim Loslassen eines Repeatbuttons
Am im Forum: GUI: WPF und XAML

Hallo,

des Rätsels Lösung ist einfach .... ein Klick ist ein Klick ... das bedeutet runter und wieder rauf...du wirst bei einem Click-Event niemals ein MouseUp oder ähnliches erhalten, da dieser schon passiert ist.

MouseDown event suchen, Zeitstempel speichern und dann kannst du im MouseUp die differenzzeit zwischen mousedown und mouseup verwenden. Zumal dein Ansatz, es in einer Funktion synchron zum UI-Thread zu verarbeiten eh nicht funktionieren wird, du müsstest die Zeitprüfung in einen Task/Thread auslagern.

Thema: Einstieg in Versionsverwaltung
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallöchen,

warum so kompliziert. Für 2 Leute die vorher keine Versionsverwaltung verwendet haben - muss auf der anderen Seite ja genauso sein, sonst würde die Frage nicht aufkommen - braucht man keine umfangreiche Lösung, nur um seine Quellcodes zu sichern.

VisualSVN Server und AnkSVN reichen da vollkommen aus und die Installation und Bedienung sind nicht unbedingt Stoff für eine Doktorarbeit und der Zeitaufwand ist relativ gering für die Einrichtung.

Ich kann dir nur raten dir das einfach mal zu installieren und auszuprobieren. Die TFS VS-Integration kostet ziemlich viel Resourcen, macht das VS unterm Strich langsamer...biete dagegen einige nette Features mehr, die man im SVN ne Weile suchen muss oder gar nicht hat, ein bisschen Neugierde hat noch niemandem geschadet ;)

Nur solltet ihr immer n Backup machen, egal welche Versionsverwaltung ihr verwendet, irgendwann geht alles mal kaputt...

vg

Thema: WPF - Ausgewählte Reihen/Zellen aus DataGrid in TextBoxen übertragen
Am im Forum: GUI: WPF und XAML

Hallo,
es gibt in Wpf auch ein DataGridView...ist nur in nem ListView versteckt.

Aber das Thema Binding ist wirklich elementar was wpf angeht, dort arbeitet man normalerweise nicht mit den steuerelementen, sondern überträge daten vom Steuerlement zum ViewModel und wieder zurück. Dann musst du nicht parallel mit zwei Objekthierarchien arbeiten, sondern nur mit deinem Viewmodel. Das spart dir viel dusselige Arbeit(a=a' oder so ähnlich).

Beispiele findest du zu diesem Thema genug.

vg

Thema: AppSettings aus anderer Anwendung benutzen bzw Werte in andere Anwendung kopieren
Am im Forum: Rund um die Programmierung

Hallo,

die Appsettings werden normalerweise automatisch mit dem Programmstart geladen, wenn du die Datenbankeinstellungen zentral ablegen willst, musst du dir 'ne alternative Lösung ausdenken, eine Datei auf einem Netzwerkpfad wäre sehr einfache Option.

Geht natürlich auch komplizierter :) Je nach Geschmack und Anforderung

Thema: sharpDox - Ein Dokumentationstool für C# | Version 1.2
Am im Forum: Projekte

Hallo,

ich war mal neugierig und bin wahrscheinlich über selben Fehler gestolpert.

Bei der Auswahl der Sprache, wenn man irgend eine Eingabe macht, die nicht in der Liste der Sprachen verfügbar ist, wird dein Watermarktext nicht versteckt.

Also Trigger anpassen.

vg

Thema: fertige WPF RichTextBox gesucht
Am im Forum: GUI: WPF und XAML

Hallo,

versuchs mal damit :http://www.c-sharpcorner.com/UploadFile/mahesh/wpf-richtextbox/

Das musst du nicht selbst machen, das gibts schon im WPF

Thema: Koordinatensystem Pfadmarkupsyntax
Am im Forum: GUI: WPF und XAML

Hallo,

jedes UI-Element hat sein eigenes Koordinatensystem das bei 0,0 anfängt, die Koordinaten eines UI-Elements sind immer relativ zu seinem parent.

Thema: WCF Service scheint MaxReceivedMessageSize zu Ignorieren
Am im Forum: Netzwerktechnologien

Hallo,

http unterstützt glaub keine größeren pakete, dafür müsstest du entsprechend andere protokolle verwenden...net.tcp könnte dir helfen und ist schneller.

Thema: WPF Im hierarchical Treeview ein Root-Node einblenden / anzeigen
Am im Forum: GUI: WPF und XAML

Hallo,

die entitäten direkt an die ansicht weiter zu geben, bringt einige schwierigkeiten mit sich, wenn es um anzeigen geht. ich verwende für solche fälle eine einfache wrapper-klasse, welches mein datenobjekt und einige eigenschaften enthält, die ich an die entsprechenden controls binden kann, damit habe ich die möglichkeit bestimmte verhaltensweisen zu steuern ... zb IsSelected oder ähnliches.

die manipulation des treeview-controls aus dem code behind ist sehr stark eingeschränkt, da wpf auf einer andere technischen idee basiert, als winforms, die alternative ist du verwendest entsprechend trigger in deinem datatemplate.

Thema: WPF: Organisation von verschiedenen Themes für Custom Controls
Am im Forum: GUI: WPF und XAML

Hast du das in deiner AssemblyInfo.cs drin ?

[assembly:ThemeInfo(
    ResourceDictionaryLocation.None, //Speicherort der designspezifischen Ressourcenwörterbücher
                             //(wird verwendet, wenn eine Ressource auf der Seite 
                             // oder in den Anwendungsressourcen-Wörterbüchern nicht gefunden werden kann.)
    ResourceDictionaryLocation.SourceAssembly //Speicherort des generischen Ressourcenwörterbuchs
                                      //(wird verwendet, wenn eine Ressource auf der Seite, in der Anwendung oder einem 
                                      // designspezifischen Ressourcenwörterbuch nicht gefunden werden kann.)
)]

Thema: Byte Enum flags aktiviert beim Setzen von allen Flags nur einen Teil
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

also erstmal die Lösung deines Problems :

0x0-F sind Hexadezimalwerte...wenn du Flags definieren möchtest und nicht die Zahlenwerte der entsprechenden Bitmuster reinklamüsern möchtest benutze die folgende Schreibweise:

public enum FlagEnum
{
    None = 0,

    Flag1 = 1 << 0,

    Flag2 = 1 << 1,

    Flag3 = 1 << 2,

    Flag4 = 1 << 3,
}

1 << 0 = 0
1 << 1 = 1
1 << 2 = 2
1 << 3 = 4

Das sagt: verschiebe das 1. bit (Wert 1 ist immer bit 1 gesetzt alle anderen 0) um n stellen nach links...findest du im internet unter dem Begriff: bit-shift. wichtig ist das nicht >> verwendet wird...das geht nur auf prozessoren die das intel-byte format verwenden...apple macht es glaub ich anders rum.

Abfragen kannst du das ganze mit Enum.HasFlag(...)

Das Flags - Attribut benötigst du dafür nicht, das hat einen anderen Zweck.

Aber wie schon oben geschrieben wurde, ist ein Rechtesystem damit doch sehr eingeschränkt, du wirst merken das 64 bit zu wenig sind -mehr kannst du momentan nicht adressieren, jedenfalls nicht mit den Handelsüblichen prozessoren und compilern. Für einfache Anwendungsfälle, wo es nicht mehr als 64 Rechte gibt kann man sowas als Tüftellösung verwenden. Für größere Sachen finden sich bessere Lösungen. Es ist auf jeden Fall die perfomanteste aller Lösungen, da bit-operationen die schnellsten operationen auf deinem Prozessor sind - schneller gehts also nicht mehr ;)

vg

Thema: WPF: Organisation von verschiedenen Themes für Custom Controls
Am im Forum: GUI: WPF und XAML

Auf der Seite wpftutorials.net findest du ansätze dafür, falls du das noch nicht kennst, dort stehen viele grundlagen fürs wpf drin.

das thema ist wie gesagt sehr komplex, ich hab auch ne weile gebraucht und ne anleitung von a-z wirst du wahrscheinlich nicht finden, sonst hätte ich dir nen link gegeben.

Thema: WPF: Organisation von verschiedenen Themes für Custom Controls
Am im Forum: GUI: WPF und XAML

Hallo,

theming ist ein recht komplexes thema, das du nicht so einfach lösen kannst. du wirst eine klasse benötigen, die deine themenauswahl entsprechend in einen dateinamen umwandelt und das xaml/baml lädt. der schlüssel zum ganzen dabei sind die richtigen x:key-werte für die styles...das ist ein ganz schönes gewusel.

ich würde dir raten, um dich in das thema einzuarbeiten, ein einfaches projekt zu suchen, dafür gibts sicherlich viele beispiele. versuch dabei solche zu finden die keine hacks verwenden...davon gibts auf codeplex und co genug...

Thema: [DataGridComboBoxColumn] bestimmte Einträge fett darstellen in Abhängigkeit der Zeichenlänge
Am im Forum: GUI: WPF und XAML

Das mag sein, aber mal ganz abgesehen davon dass ich nicht behauptet habe, dass man das nicht testen kann...macht es meines erachtens gar keinen Sinn nen Farbwert zu testen oder eine Schriftgröße oder sonst irgendwas in der Richtung. Soviel zu deiner kindisch provokanten Formulierung. Einmal ein Buch gelesen, schon ein Experte ;)

Mein Hauptargument war eher die Ausartung des Code, die sowas mit sich bringt. Ein schönes Beispiel wäre die Sichtbarkeit von Objekten, abhängig von bestimmten Zuständen deines ViewModels. Natürlich kannst du das in ein vm packen, aber ich finde es persönlich extrem nervig, Code zu warten, der über mehrere Funktionen verteilt einen UI-Wert setzt, das ist einfach schwer nachzuvollziehen. Hingegen bist du mit Triggern gezwungen, solche Zustände über Eigenschaften entsprechend zu ermitteln. Das ist wesentlich einfacher nachzuvollziehen und vor allem sauberer.

Ich weiß nicht wie stark deine Tests ausformuliert sind, aber ich würde nicht auf die Idee kommen, Farben oder Schriftgrößen zu testen, ich kenn ehrlich gesagt auch niemanden der das macht...mir ist die Funktionalität einer Anwendung wichtiger als das Aussehen.

Nicht immer arbeiten Entwickler und Designer im selben Büro, geschweige denn im selben Raum oder sind ein und dieselbe Person. Bei Miniprojekten von ein paar tausend Zeilen Code ist das alles noch überschaubar, das sieht bei 10 Leuten schon ganz anders aus.

Ein ViewModel ist natürlich auch ein Model...nur nicht für dein BL...daraus ergibt sich folgendes :
View+VM != UI weil View = UI...oder hat dein ViewModel n Knopf zum draufdrücken.

10 Leute ... 10 Meinungen ... und jeder weiß es besser als der andere...meine muss ja nicht richtig sein. also nen schönen tag noch.

Thema: [DataGridComboBoxColumn] bestimmte Einträge fett darstellen in Abhängigkeit der Zeichenlänge
Am im Forum: GUI: WPF und XAML

Hallöchen,

einen Konverter zu verwenden ist der richtigere Weg. Ui-Werte haben in einem Viewmodel eigentlich nix zu suchen, da man damit die Trennung von Oberfläche und Funktionaltität durchbricht.

Der Grund für eine Trennung von View und Model ist recht einfach erklärt : Testbarkeit. In einem Viewmodel definierst du, was mit Benutzerinteraktionen passieren sollen, also wie sich ein System durch eine Benutzereingabe verhält. Zb:

Du hast ein Eingabefeld, dass bei bestimmten Werten unterschiedliche Verhaltensweisen hat. Über einen Integrations/Unittest kannst du das Viewmodel testen ohne selbst einen Finger krumm zu machen. Dadurch ist es dir möglich, die funktionale Lauffähigkeit eines System zu stärken oder anders ausgedrückt, ein sichereres Gefühl bei Änderungen zu bekommen. Durch diese Tests ist, je nach Vollständigkeit, garantiert, dass du nicht ausversehen einen unerwünschten Seiteneffekt erzeugst.

Ich habe grundsätzlich alles im XAML was das GUI betrifft. Gerade solche Sachen wie Fonts, Farben, Sichtbarkeit und Größen lassen sich sehr gut über Trigger/Converter/Styles lösen. Denn das Resultat bei Komplexen ViewModels wäre:10 Methoden ändern 20 Properties die nur die UI betreffen und jeder gibt seinen Senf dazu. Das im späteren Projektverlauf bei neuen Anforderungen ohne irgendwelche unerwünschten Verhaltensweisen zu Ändern...dürfte spannend sein, also so gut wie unmöglich. Code wird nicht nur einmal geschrieben, sondern immer wieder angepasst und Fehler suchen ist ne unschöne Aufgabe, die Zeit kostet.

Am Ende ist es dir überlassen, wie du damit umgehst, 10 Leute ... 10 Meinungen.

vg

Thema: double.TryParse funktioniert nur bedingt
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

stell beim Anwendungsstart einfach dein CurrentCulture um...dann ist dein Problem gelöst. Die ist standardmäßig nicht de-de.

Thema: xml auslesen und später in sql datenbank speichern
Am im Forum: Grundlagen von C#

Hallo,

du kannst dir das manuelle laden von Xml-Dateien sparen, wenn du die Serialisierung verwendest.

Dann hast du nachher 1 Zeile Code für den Ladeaufruf und ein entsprechendes Klassemodell für den Inhalt der Xml-Datei.

vg

Thema: NotifyPropertyChanged für alle Properties, Reihenfolge???
Am im Forum: GUI: WPF und XAML

Holla,

also ich muss mal raten, weil aus deiner Fragestellung heraus vermute ich dass du dein memento testen möchtest ? Oder gehts dir nu um die reihenfolge?

Wenn du nen UnitTest für dein event invoke schreibst, wird nix passieren...der/die/das/the event wird zwar ausgelöst, aber hat keine abonnenten, die bekommst du erst beim Binding...mich wunderts wozu du da ne Reihenfolge brauchst, da kannst du nur Trace .WriteLine machen...jedenfalls wär alles andere sinnfrei.

Falls dein Code auf ner Reihenfolge deiner Property-Setter basiert :) solltest du ggf mal deinen Code refaktorieren...du kannst später schlecht vorschreiben Property A vor Property B...hält sich kein Mensch dran und man selbst denkt 2 Wochen später auch nicht mehr dran - ist auch ganz uncool, wenn du mit reflection arbeitst oder komponenten benutzt, die mit reflection arbeiten...

vg

Thema: Bildschirmauflösung - Textgröße bliebt gleich
Am im Forum: GUI: WPF und XAML

Hallo,

du kannst das mit ner ViewBox lösen. Mach die als Container um deinen Eigentlichen Button.Content

vg

Thema: Bindungsrichtung, Zugriff auf ViewModel über View
Am im Forum: GUI: WPF und XAML

Vielleicht mal anders ausgedrückt:

Assembly A - Typ A

Assembly B - Typ B

Container enthält deine geladenen Typen (plugins, etc)


public class A 
{
   public class A()
   {
       B  = Container.Get<B>();
   }
   public B {get;set;}
}

B = Container.Get<B>(); <<--- B existiert nicht weil B noch nicht geladen wurde, also der Typ unbekannt ist, auch wenn du dort interfaces dran machst, kann das interface nur ein Schlüssel sein um an B zu kommen, nicht aber B selbst...kausalität...anders ausgedrückt: geht nicht, weil ist nicht da.

Nun kannst du die Reihenfolge deiner Assemblies in der Konfig ändern, aber das funktioniert auch nur eine Weile, bis irgendwas gemacht werden soll, wo die Reihenfolge nicht mehr reicht.

Es wird immer eine Komponente geben, die andere verwendet, im schlimmsten Fall über Kreuz, das tut nicht weh und sollte auch funktionieren(solange man in der selben "Architektur-Schicht" ist)

Das Laden von Assemblies und Typen ist leicht, die untereinander zu verbinden, eine andere Geschichte, wie gesagt, der Teufel liegt im Detail.