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 teebeast
Thema: Events und Delegates
Am im Forum: GUI: Windows-Forms

Wie soll denn die Methode PostCard aufgerufen werden? Soll das durch eine manuelle Aktion gestartet werden oder irgendwie automatisch passieren?

Die Frage ist, ob hier ein Event überhaupt notwendig ist. Dein UserControl könnte eine Methode habe, wo der darzustellende Text von außen übergeben werden kann. Sehr wahrscheinlich wird Dein Fenster die Kontrolle über Deine Klasse ApiRequest haben, da dort die Instanz erzeugt wird und somit auch Kontrolle über die die Methode PostCard. Passe die Methode an, sodass sie Deinen erstellter String als Rückgabewert liefert. Wenn Du Dir dann noch die im Fenster dargestellten UserControls merkst, kannst Du den Rückgabewert der Methode des Controls übergeben.

Ach ja, schau Dir mal das Konzept von async und await an. Verwende await statt .Result. Async-Methoden sollten darüber hinaus immer einen Task als Rückgabewert liefern - bis auf Events.

Vermeide MessageBox-Aufrufe in der Logik. Die Aufrufe sollten immer nah an der Oberfläche sein bzw. da wo eine Aktion gestartet wird, also z.B. in einem abonnierten Event. Wird so eine Methode von einem Dienst verwendet, hast Du ein Problem.

Thema: Enum.HasFlag (oder wo liegt mein Fehler?)
Am im Forum: GUI: WPF und XAML

Ich habe das Gefühl, dass hier die Logik vertauscht ist. Darüber hinaus ist ein switch-Block ist für ein bool meist ungeeignet, nutze hier einen if-Block.


switch (Filter.HasFlag(_typeOfMessage) == false)
{
    case true:
        Filter |= _typeOfMessage; break;
    default:
        Filter &= ~_typeOfMessage; break;
}

Sollte wohl eher so aussehen:

if (Filter.HasFlag(_typeOfMessage))
{
    Filter &= ~_typeOfMessage; // entfernen, wenn bereits vorhanden
}
else
{
    Filter |= _typeOfMessage;  // hinzufügen, wenn noch nicht vorhanden
}

Thema: Architektur einer Lebenssimulation
Am im Forum: Rund um die Programmierung

Hi,

mein Ansatz wäre, dass für ein Objekt (Person, Tier, Auto) an einem Ort (Zimmer, Straße, Kneipe) mit einer gewissen Wahrscheinlichkeit ein Ereignis eintreten kann. Das kann ein Ereignis sein, auf das man keinen Einfluss hat oder eine Reaktion zulässt. Also eine Handlung zulässt. Verhältnisse zwischen Objekten würde ich über Beziehungen abbilden, die definieren wie der aktuelle Stand der Beziehung (z.B. Angestelltenverhältnis) ist.

Ich würde es für den Anfang auch sehr einfach halten. Kümmere Dich erst einmal darum, wie Deine Ereignisse ausgelöst werden und welche Komplexitäten Du hier benötigst. Tritt Dein Ereignis immer nur an einem Ort auf? Kann es auch an mehrere Orten auftreten? Lege ich im Zweifel neue Ereignis-Duplikate an oder versuche ich diese für andere Orte wieder zu verwenden? Die Frage ist in diese Fall, lässt Du Redundanz zu oder reduzierst Du diese durch komplexere Objektstrukturen.

Wichtig ist auch, was siehst Du am Anfang als gegeben an. Hat Dein Charakter immer einen Job? Wenn nein, dann kann er seinem Chef nicht begegnen. Hat Dein Charakter immer ein Haustier? Das kann Auswirkung darüber haben, welche Ereignisse zulässig sind. Heißt Du brauchst ggf. Eigenschaften am Ereignis, dass ein Chef benötigt wird. Kann heißen, dass das Ereignis gar nicht ausgewählt werden darf oder eben nichts passiert, wenn das Ereignis aufgrund der Bedingungen für das Eintreten nicht eintreten kann.

Ich hoffe, ich habe es einigermaßen verständlich geschrieben. Auf die Datenhaltung bin ich nicht eingegangen, da die sich in der Regel aus den gewählten Strukturen von ganz allein ergeben. Es sei nur angemerkt, dass das Pflegen der Daten sehr schnell und einfach gehen sollte und die Daten sich ggf. unabhängig von der eigentlichen Programminstallation aktualisieren lassen sollten.

Ach ja, ich fänd es witzig, wenn man "ruhig bleiben" auswählt, aber der Charakter sich mit einer gewissen Wahrscheinlichkeit trotzdem für "eskalieren" entscheidet, weil zu einem bestimmten Prozentsatz immer "eskalieren" ausgewählt wurde.

Thema: Schnelles Durchlaufen von Dateipfaden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Meine Erfahrung mit solchen großen Datenmengen ist, dass es Sinn macht, die Dinger in Ordnern (durchaus mehrere Ebenen) zu organisieren, sodass die Anzahl der Dateien maximal bei einigen Tausend liegt. Ich weiß nicht, ob es eine Auswirkung hat, wenn man große Dateimengen in .NET abfragt. Aber spätestens, wenn man sich die Dinger im Windows Explorer anzeigen lassen will, dann darf man warten.

Thema: WPF Fensterposition und Größe speichern
Am im Forum: GUI: WPF und XAML

Wir schreiben die Daten in das lokale Profil des Benutzers, genauer gesagt in die Registry. Datenbank ist hier - denke ich - nicht notwendig, da es sich um unwichtige Informationen handeln, die der Nutzer jederzeit durch die Positionierung des Fensters wieder herstellen kann.

Interessanter ist aber, dass wir die Positionierung abhängig von der Gesamtauflösung (WorkingArea) speichern. Warum? Durch die ganze Homeoffice-Geschichte kommt es häufiger vor, dass auf den Rechner lokal oder remote zugegriffen wird und hier unterschiedliche Monitor-Konstellationen vorhanden sind.

Thema: Binding an einen DataContext von einem DataGrid das an eine ItemsSource gebunden ist
Am im Forum: GUI: WPF und XAML

Hi,

wir haben in unseren Projekten immer mal wieder das Problem, dass wir nicht auf Eigenschaften des DataContextes in DataTemplates zugreifen können. Wir nutzen hier eine Hilfsklasse, um das umsetzen zu können. Haben wir irgendwann mal entdeckt und ist recht hilfreich.


/// <summary> Bindet den DataContext gegen Elemente, die nicht im Visual-Tree auftauchen </summary>
public sealed class DataContextBinder : Freezable
{
    /// <summary> Dependency-Property von <see cref="DataContext"/> </summary>
    public static readonly DependencyProperty DataContextProperty =
        DependencyProperty.Register(nameof(DataContext),
            typeof(object),
            typeof(DataContextBinder),
            new PropertyMetadata(null));

    /// <summary> zu bindende DataContext </summary>
    public object DataContext
    {
        get { return GetValue(DataContextProperty); }
        set { SetValue(DataContextProperty, value); }
    }

    /// <summary> Erzeugt eine neue Instanz von <see cref="DataContextBinder"/> </summary>
    protected override Freezable CreateInstanceCore()
        => new DataContextBinder();
}

Definition in der XAML-Datei:

<Window.Resources>
    <utils:DataContextBinder x:Key="DataContextBinder" DataContext="{Binding}"/>
</Window.Resources>

Verwendung:


<DataTemplate>
    <TextBox Text="{Binding Source={StaticResource DataContextBinder}, Path=DataContext.TextProperty}"  />
</DataTemplate>

Vielleicht ist es ja mal nützlich.

Thema: Windows-Fotoanzeige zeigt nicht alle .jpg-Dateien an
Am im Forum: Smalltalk

Seit einem der letzten Updates gibt es Probleme mit der Windows-Fotoanzeige. Vor allem bei der Darstellung von TIFF-Dateien. Vielleicht betrifft Dich das in Deinem Fall auch.

Thema: MessageCommunicator - Tool zum Testen von TCP-/IP Kommunikation
Am im Forum: Projekte

Ich habe gesehen, dass Du als Abhängigkeit das NuGet StringFormatter verwendest. Überlege mal diese Implementierung durch den Standard zu ersetzen. In .NET Core 5 - und auch schon davor - wurde sehr viel an der Performance und dem Speicherbedarf im Framework optimiert. Ich wäre der Meinung, dass es einen Blog-Eintrag vom Microsoft hierzu gäbe, hab ich nur nicht gefunden. Nur den hier: Performance Improvements in .NET Core 5

Thema: Warum wirft EF Core mit gemappten Entitäten eine "is already being tracked." Exception?
Am im Forum: Datentechnologien

So wie es ausschaut, hast Du ja das Objekt language aus der Datenbank (DataContext) geladen. Was im Mapper passiert, ist nicht transparent. Aber Du solltest Deinem translation-Objekt language und nicht mappedLanguage zuweisen. Die werden die identische Id haben und daher kommt die Meldung.

Normalerweise reicht es, die Id einer Referenz zuzuweisen und zu speichern, sofern der DataContext nur für den Zeitraum des Speicherns lebt. Wenn Du den DataContext länger leben lässt - wegen Caching oder ähnlichem - dann kommt man ggf. nicht drum herum auch die Referenz zu setzen. Ich persönlich vermeide es auf DataContext-Ebene zu cachen oder unnötig langlebig zu halten.

Auch verstehe ich nicht, warum die Language gemappt wird. Normalerweise sollte sich doch an dem Objekt in dem Kontext nichts ändern dürfen, oder doch? Die Frage wäre, ob dann die Language nicht ihre eigene Speichermethode bekommt.

Thema: Wie kann ich ein WPF Grid mit DocumentPaginator im Querformat drucken?
Am im Forum: GUI: WPF und XAML

Hallo,

Du musst DocumentPage mit der PageSize initialisieren, dann sollte es funktionieren. Anbei Teile meiner Implementierung.

private DocumentPage CreatePage(Grid grid)
{
    var box = this.SizingPageGrid(grid);

    return new DocumentPage(grid, this.PageSize, box, box);
}

private Rect SizingPageGrid(Grid grid)
{
    var box = new Rect(new Point(0, 0), this.PageSize);

    grid.InvalidateArrange();
    grid.UpdateLayout();
    grid.Measure(this.PageSize);
    grid.Arrange(box);

    return box;
}

Thema: Migration zu Visual Studio 2019 / Metadata Problem
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ich hatte bisher noch nie wirklich Probleme bei der Umstellung der Visual Studio Version. Meiner Meinung nach riecht es schon sehr stark nach Problemen mit Referenzen.

Wenn das Projekt referenziert ist, prüfe mal, ob im ConfigurationManager alle Projekte zum Bauen aktiv sind. Bei uns ist so ein Fehler häufig aufgrund der falschen Targetplattform (AnyCPU, x86) zurück zu führen.

Thema: Azure: Bestehende Webseite hosten bzw. migrieren - Erfahrungen und Kosten
Am im Forum: Smalltalk

Ich glaube ich habe mich mit dem Hosting-Angebot etwas unglücklich ausgedrückt. Es würde sich dann in dem Fall nicht mehr um einen Server handeln, sondern nur um ein Webhosting-Paket. Aber es würde überraschenderweise .NET-Core mit anbieten.

https://www.ionos.de/hosting/webhosting

Ob es dann letztendlich meinen Anforderungen entsprechen würde, bleibt noch zu prüfen. Irgend eine Kröte muss man bei solchen Angeboten immer schlucken.

Zitat
Du musst nur evtl. einfach die Inhalte (wo)anders pflegen; und dann daraus beim Speichern statischen Inhalt erzeugen.

Hm, aber am Ende des Tages brauche ich dann doch eine dynamische Umgebung, wo die Inhalte geflegt werden können. Das verschiebt doch nur die Problematik und am Ende habe ich zwei Ökosysteme zu pflegen. Den einzigen Vorteil hier sehe ich in der Entkopplung zwischen Contentpflege und Contentdarstellung.

Thema: Azure: Bestehende Webseite hosten bzw. migrieren - Erfahrungen und Kosten
Am im Forum: Smalltalk

Vielen Dank für Eure Antworten. Ich muss mir mal Gedanken machen, ob Azure für das Projekt überhaupt die geeignete Plattform ist. Ich finde Azure eine sehr interessante Plattform und wollte mal etwas Erfahrungen sammeln.

Mein Focus liegt dann aber doch mehr auf dem Sammeln praktischen Erfahrungen mit .NET Core. Wenn das in einem finanziell vernünftigen Rahmen nicht vereinbar ist, dann werde ich wohl zu klassischen Hosting-Lösungen greifen. Hier gibt es passende Angebote bereits ab 4 Euro. Wobei ich für das Sammeln von Erfahrungen mit der Plattform durchaus bereit wäre, den einen oder anderen Euro mehr zu investieren. Auch um mal mit anderen Lösungsansätzen in Berührung zu kommen.

Zitat
Ein einfaches "Lift and Shift" ohne Anpassungen an die Cloud Technologien wird immer teurer ablaufen.
Immer.

Das ist mir schon klar. Grundsätzlich bin ich hier schon offen für alternative Ansätze. Nur welche die geeigneten sind, ist mir nicht so ganz klar. Ich werde mich hier bei Gelegenheit noch einmal etwas intensiver befassen.
Zitat
Mein Blog oder azuresaturday.de haben wir jedoch mit statischen Generatoren gemacht.
Mein Blog mit einer eigenen Engine und azuresaturday.de mit Hugo.

Statische Generatoren erzeugen durch ein Template HTML Code, das dann sehr Kostengünstig auf einem Blob Storage liegen kann.

Was in meinem Fall eher gegen eine statische Webseite spricht, ist der Einsatz einer kleinen Benutzerverwaltung zur Inhaltspflege. Als Ersteller der Webseite möchte ich mich nicht um die Contentpflege kümmern.

Derzeit hoste ich noch auf einem virtuellen Windows 2008 R2 Server. Etwas ändern muss sich über kurz oder lang definitiv. Perspektivisch ist die Umgebung jedenfalls nicht.

teebeast

Thema: Azure: Bestehende Webseite hosten bzw. migrieren - Erfahrungen und Kosten
Am im Forum: Smalltalk

Hallo zusammen,

ich habe immer wieder mal - mit wenig Erfolg - mir überlegt, wie ich eine bestehende Webseite nach Azure bekommen könnte bzw. ob Azure für mich überhaupt eine geeignete Wahl ist. Vor allem aus dem finanziellen Aspekt heraus. Gerade hier habe ich das Gefühl, dass man ganz schnell in finanzielle Dimensionen vorstößt, die für ein Freizeitprojekt nicht akzeptabel ist.

Nun kurz mal zur Bestandsaufnahme:

- Es kommt aktuell ASP.NET MVC 5, EF6 sowie MySQL als auch SqlCE zum Einsatz
- Für Daten werden ca. 1 GB benötigt - hauptsächlich Galeriebilder
- Die Datenbanken haben jeweils eine Größe von ca. 20 MB. Hier werden hauptsächlich Informationen zu Mannschaften, Spielpläne als auch News und Termine vorgehalten
- Die Zugriffzahlen auf die Webseite sind vernachlässigbar (< 100 pro Tag)

Sofern aus Eurer Sicht Azure in Frage kommen würde, was wäre dann die bei Azure zu wählenden Komponenten, um möglichst preisgünstig zu sein? Im Zuge der Umstellung wird auch eine Migration des Projektes nach .NET Core 2.2+ erfolgen. Bei der Wahl der Datenhaltung bin ich flexibel.

Über persönliche Erfahrungen sowie Vorschläge als auch Links zum Thema Azure oder auch Migration würde ich mich freuen. Gerne auch, ob Euch die Komplexität des Angebotes ebenfalls erschlägt.

teebeast

Thema: .NET Core 2.2 SDK wird von VS2017 nicht gefunden
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Das gleiche Problem hatte ich vor paar Tagen auch. Ich hatte ein SDK der Version 2.2.2xx installiert. Als ich dann auf der Webseite von Microsoft geschaut habe, war die aktuellste Version aber eine 2.2.1xx. Eventuell war das eine Preview-Version die mit der Preview von VS 2019 installiert wurde. Die eine Version deinstalliert, die andere installiert und schon hat es funktioniert.

Thema: Den Farbverlauf von einem Telerik Steuerelement auslesen
Am im Forum: GUI: WPF und XAML

Servus,

Telerik liefert für seine Komponenten den Quellcode mit. Ist m.E. in jeder Lizenz enthalten. Bei WPF werden unabhängig vom Quellcode die Style-Dateien als Ressourcen mitgeliefert. Man kann also ganz entspannt nachschauen. Außerdem gibt es auch einen Color Theme Generator für die WPF-Komponenten. Vielleicht hilft Dir der bei der Suche weiter - oder zumindest beim Stylen.

Thema: Microsoft Edge wird Chromium-kompatibel
Am im Forum: Szenenews

Ich erhoffe mir langfristig, dass es zukünftig nur noch eine Render-Engine gibt - und das als Open Source, sofern sie das nicht schon ist. Sollte bei der Entwicklung einiges einfacher machen.

Dominanz- und Monopolprobleme seh ich erst einmal nicht so sehr, schließe sie aber nicht aus. Auf der Engine kann jeder sein eigenes Programm drumherum aufsetzen. Hier sehe ich genügend Spielraum für Philosophien und Raum für Abgrenzung, um ein gesundes Maß an Browser-Konkurrenz zu haben.

Thema: Welches WPF Event wird bei aktualisiertem Fenster geworfen?
Am im Forum: GUI: WPF und XAML

In meinen Augen scheint das ein falscher Ansatz zu sein. Du scheinst nicht das MVVM-Pattern zu verwenden, dass für ein optimales Arbeiten mit WPF verwendet werden sollte. Auf Events von WPF zu hören, dass etwas fertig gerendert wurde, scheint mir in diesem Fall der falsche Ansatz zu sein.

Mein persönlicher Lösungsansatz wäre eine IsBusy-Eigenschaft im ViewModel, welches gegen die Visibility des LoadingScreen-Controls gebunden wäre. Somit kann ich aus Routine für das Laden von Daten die Bearbeitbarkeit der Oberfläche steuern.

Thema: XAML Extension in Basis Klasse auslagern
Am im Forum: GUI: WPF und XAML

Hallo Manullino,

ich habe die Extension selbst schon genutzt und habe mich an der Schreibweise nicht gestört - sie ist recht knapp gehalten. Hinter lex:Loc steckt ja etwas Logik, welche anhand eines Strings aus einer definierten Resource die Übersetzung zieht.

Nach dem Du nur einen String definieren möchtest, müsstest Du bei der Initialisierung des Controls den String aus Content auslesen und durch die Übersetzung ersetzen. Für Label ist das noch einfach, aber es gibt Controls, die mehr als ein übersetzbares Property haben. Ferner müsste der Mechanismus für jedes verwendete Control geschrieben werden. Ich weiß nicht, ob der Aufwand einschließlich der einhergehenden Fehleranfälligkeit und Wartbarkeit zum gewünschten Ergebnis stehen würde. Ich bezweifle das eher sehr.

teebeast

Thema: IDataErrorInfo: Methode für die Validierung einer Eingabe bei CustomControls wird nicht getriggert
Am im Forum: GUI: WPF und XAML

Nach ein paar frustrierenden Stunden saß das Problem vor dem Computer selbst. Es wurde ein falsches Property für die Validierung verwendet. Derer gibt es leider bei Bindungen zuhauf und mir ist es nicht aufgefallen, da mich die Spur auf eine falsche Fährte geführt hat.

<local:TestTextBox Text="{Binding ElementName=Me, Path=TestValue, ValidatesOnDataErrors=True, Mode=TwoWay}" />

@MrSparkle: Ich respektiere die hier geleistete Arbeit vollumfänglich. Nur macht der Ton die Musik und einen Fehler da zu suchen, wo ich ihn ausgeschlossen habe, ist nicht hilfreich und zielführend. Da ist keine Antwort die bessere Antwort.

Trotzdem viel Dank für Eure Hilfe.

Thema: IDataErrorInfo: Methode für die Validierung einer Eingabe bei CustomControls wird nicht getriggert
Am im Forum: GUI: WPF und XAML

Zitat
Wenn dem so wäre, hättest du das problem wahrscheinlich nicht.

@FZelle, ich nehme das jetzt etwas persönlich, hier meine fachliche Kompetenz in Frage zu stellen. Diesem Forum-Post gehen zwei Stunden Google-Suche voraus, bevor ich die Community hier mit meiner doch sehr speziellen Frage belästige. Würdest Du die Implementierung von IDataErrorInfo kennen und verstehen, dann hätte Dir spätestens an der XAML-Implementierung auffallen müssen, dass die Implementierung des ViewModels irrelevant ist, da in beiden Fällen gegen das gleiche Property aus dem ViewModel gebunden wird. Das Triggern für die Validation sollte aber aus der View bzw. dem Control ausgelöst werden. Einmal funktioniert es und einmal nicht. Also muss das Problem meines Wissens nach in der Implementierung von individuellen DependenyProperties liegen.

Anbei die Implementierung des ViewModels. Belehre mich eines besseren und ich verneige mich und ziehe meinen Hut.

    public class TestViewModel : INotifyPropertyChanged, IDataErrorInfo
    {
        private int? _testValue;

        public int? TestValue
        {
            get { return this._testValue; }
            set
            {
                if (this._testValue != value)
                {
                    this._testValue = value;
                    this.RaisePropertyChanged(nameof(this.TestValue));
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void RaisePropertyChanged(string propertyName)
        {
            this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

        public IDictionary<string, string> ValidationErrors { get; } = new Dictionary<string, string>();

        public string this[string columnName]
        {
            get
            {
                this.ValidationErrors.Remove(columnName);

                string errorText = null;

                switch (columnName)
                {
                    case nameof(this.TestValue):
                        errorText = "TESTFEHLER";
                        break;
                }

                if (!string.IsNullOrWhiteSpace(errorText)) this.ValidationErrors.Add(columnName, errorText);

                return errorText;
            }
        }

        public string Error { get; } = null;
    }

Es wäre schön, zumindest einen Hinweis zu bekommen, wo ich mit meiner Suche ansetzen muss. Die Websuche hat leider keine brauchbaren Ansätze geliefert. Danke.

Thema: IDataErrorInfo: Methode für die Validierung einer Eingabe bei CustomControls wird nicht getriggert
Am im Forum: GUI: WPF und XAML

Hallo,

ich habe das Problem, dass die Methode für die Validierung einer Eingabe nicht getriggert wird. Hierzu habe ich mal eine Testimplementierung gemacht, um das etwas genauer zu verdeutlichen. Das Interface IDataErrorInfo ist im ViewModel korrekt implementiert und wird hier nicht exemplarisch dargestellt.

    public class TestTextBox : TextBox
    {
        public static readonly DependencyProperty ValueProperty =
            DependencyProperty.Register("Value", typeof(int?), typeof(TestTextBox),
                new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, ValueChangedCallback));

        public TestTextBox()
        {
            this.LostFocus += (sender, args) =>
            {
                int value;
                if (string.IsNullOrWhiteSpace(this.Text)) this.Value = null;
                else if (int.TryParse(this.Text, out value)) this.Value = value;
                else this.Value = null;
            };
        }

        private static void ValueChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var control = d as TestTextBox;

            if (control == null) return;

            control.Text = string.Format("{0:F0}", control.Value);
        }

        public int? Value
        {
            get { return (int)this.GetValue(ValueProperty); }
            set { this.SetValue(ValueProperty, value); }
        }
    }

Im Xaml funktioniert die Bindung gegen Text, gegen Value aber nicht.
<local:TestTextBox Text="{Binding ElementName=Me, Path=TestValue, NotifyOnValidationError=True, Mode=TwoWay}" />
<local:TestTextBox Value="{Binding ElementName=Me, Path=TestValue, NotifyOnValidationError=True, Mode=TwoWay}" />

Hat jemand eine Idee, was in der Implementierung fehlt, sodass es auch mit dem Property Value funktioniert?

Ronny

Thema: Beispiel für Dekorierer-Entwurfsmuster
Am im Forum: Rund um die Programmierung

Hi,

wie Abt schon geschrieben hat, muss eine Klasse, die über Application.Run aufgerufen wird, von Form erben. Das tut Deine Klasse BorderedPhoto aber nicht. Deswegen funktioniert es nicht.

Thema: ASP.NET statische readonly Klasse innerhalb einer Session (Employee) - Wie?
Am im Forum: Web-Technologien

Hallo,

man kann kleinere Objekte problemlos serverseitig in der Session ablegen. Die Klasse sollte aber mit dem Attribut [Serializable] dekoriert werden, da die Session serverseitig auch serialisiert werden kann - je nach Konfiguration.

this.Page.Context.Session["Key"] = instance;
HttpContext.Current.Session["Key"] = instance;

Über diesen Mechanismus kann man auf diese Objekte wieder zugreifen. Beim Zerstören der Session werden alle Einträge ebenfalls gelöscht, man kann dies aber auch explizit machen.

Deine Klasse könnte eine Methode ForSession() implementieren, die dafür sorgt, dass eine für die Session vorgesehene Klasse über den Konstruktor befüllt wird. Dann kann diese auch readonly sein.

Grüße

P.S.: Das Beispiel gilt für ASP.NET Forms, ASP.NET MVC funktioniert aber ähnlich.

Thema: SimpleBackup ( ein open source Backup tool )
Am im Forum: Projekte

Hi,

die Klammerung Deiner for-Schleife fehlt. StartBackup wird nur einmal ausgeführt. Grundsätzlich würde ich Dir empfehlen, dass Du der Methode StartBackup die zu kopierenden Elemente in einer Liste übergibst und diese dann über die einzelnen Elemente iteriert.

Thema: Textbox ignoriert \r\n - Strings kommen von Datenbank
Am im Forum: GUI: Windows-Forms

Hi,

also für mich schaut der Text eher nach "\\r\\n" aus. Sonst würde im Text nicht "\r\n" stehen und die Umbrüche würden einfach ignoriert werden, wenn es sich tatsächlich um ein Problem mit der Darstellung der Zeilenumbrüche handeln würde.

Thema: Funktion, die feststellt, ob eine Zahl eine perfekte Zahl ist gibt nichts aus
Am im Forum: Grundlagen von C#

Hi,

also grundsätzlich reicht es aus, in der for-Schleife die Werte aufzusummieren und danach die Summe mit der Zahl zu vergleichen. Somit kannst Du komplett auf die Variable isOk verzichten.

Ferner hätte ich die do-while-Schleife durch eine for-Schleife abgebildet, aber das ist Geschmacksache.

Thema: Entity Framework 6.1.2, SQL Server 2012 Express, Paging bzw Offset Problem
Am im Forum: Datentechnologien

Prüfe doch mal, welches Kompatibilitätslevel Deine Datenbank hat. Wenn die von einer älteren Datenbank migriert wurde, dann kann es sein, dass sie die Funktionen nur der alten Version unterstützt. Du kannst das Kompatibilitätslevel über die Eigenschaften der Datenbank verändern.

Keine Garantie, dass es das tatsächlich ist.

Gruß,
Ronny

Thema: Welche Ausbildung/Zertifizierung ist nötig, um beruflich von ABAP/SAP zu C#./NET wechseln zu können?
Am im Forum: Smalltalk

Hi,

versuche doch einfach mal, Dich auf Stellen zu bewerben. Mein Auftraggeber sucht derzeit händeringend einen Entwickler, bekommt aber derzeit keine wirklich passenden Bewerbungen und die Anforderungen sind nicht wirklich hoch angesetzt. Er bekommt sogar Bewerbungen aus der PHP- bzw. Java-Ecke - ohne das abzuwerten. Aus meiner Sicht wäre dann eher die Gehaltsvorstellung der Knackpunkt, vor allem wenn man sich bereits auf einem recht hohem Niveau befindet. Hier zählt dann sicherlich Qualifikation und vor allem Berufserfahrung.

Prinzipiell würde ich sagen, dass der Arbeitsmarkt derzeit ganz gut ausschaut und man als "Plattformwechsler" sicherlich gute Chancen auf einen Job hat. Vor allem hast Du ja schon Erfahrungen mit .NET sammeln können.

Thema: WPF + Selen Window Style Fehler!
Am im Forum: GUI: WPF und XAML

Hi,

entferne doch mal im Quellcode die Ableitung von der Basisklasse. Wird nicht benötigt, da hier die Basisklasse in der XAML-Definition verwendet wird. Alternativ kannst Du die Ableitung auch in MetroWindow ändern.