Zum Inhalt springen

KeeperOfCoffee

Mitglieder
  • Gesamte Inhalte

    1.800
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    51

Beiträge von KeeperOfCoffee

  1. vor 3 Minuten schrieb neinal:

    Meine frau mag es wenn ich kurze haare habe, also lasse ich mir regelmäßig die haare schneiden.

     

    vor 3 Minuten schrieb neinal:

    Sorry, aber das ist Schwachsinn und zeigt, dass du noch sehr jung bist.

    Du magst keine Tattoos? Was machst du, wenn deine Freundin eins will? Ihr verbieten?

    Deine Freundin will sich nächste Woche die Haare kurz schneiden lassen. Du magst keine kurzen Haare. Was passiert? Trennst du dich? oder verbietest es ihr?

    Er verzichtet freiwillig auf etwas. Du redest von verbieten....

    Wenn seine Frau im sagt er soll keinen Bart haben, finde ich es ganz normal, dass er auch sagt, wenn ihm etwas stören würde.

  2. Und durch die Batterieherstellung sind wir was die Umwelt angeht wieder bei +/- 0...

    Bloß das dies halt nicht in Deutschland passiert...kaufen wir aus China...noch dazu die schlechten Bedingungen in den Lithium und Kobaltminen...aber darüber redet man ja nicht.

  3.  

    vor 12 Stunden schrieb Finux:

    MVVM genau sein soll

    MVVM wurde durch Microsofts Software Architekten Ken Cooper und Ted Peters erfunden. MVVM ist ein Software-Architekturpattern welches die Trennung der Entwicklung der UI von der Entwicklung der Geschäftslogik oder der Back-End Logik ermöglicht. Hierbei ist das "ViewModel" die Klasse die sozusagen sämtliche Daten und auch Methoden besitzt. Wenn du also ein vorgegebenes Model hast (z.B. aus einer Datenbank), dann stellst du sämtliche Daten die du benötigst hier dar bzw. arbeitest hier mit diesen. Auch Anzeigelogik wird hier gesteuert.

    Sagen wir du hast einen Button, der nur unter verschiedenen Konditionen Enabled werden soll. Du hast die View erstellt (das Markup) und bei "IsEnabled" hast du ein entsprechendes Binding erstellt. Wie dieses Binding lautet muss der Entwickler des Businesslogik wissen. Er entwickelt die Logik die sicherstellt, ob dieser Button Enabled ist. Der UI Entwickler kann sich um andere Dinge kümmern.

    MVVM findest du in .NET, Silverlight, Angular, Vue.js. JavaFX (habe ich mal gehört jedenfalls) und anderen Frameworks.

    vor 12 Stunden schrieb Finux:

    Was ist ein Datacontext?

    Wenn man mit WPF arbeitet (also mit XAML), dann definiert der DataContext, mit welcher Klasse die aktuelle View sozusagen verbunden ist. Oben habe ich ja denn Fall mit dem Button und IsEnabled beschrieben. Das Markup muss ja wissen, wo der derzeitige Wert für IsEnabled dieses Buttons ist. Dieser befindet sich als bool in der entsprechenden Klasse, zusammen mit Logik die den Wert dieses bools verändern kann.

     

    vor 12 Stunden schrieb Finux:

    Was ist das INotifyPropertyChanged Interface?

    Ist ein Standardinterface von .NET. Wird gebraucht für das OnPropertyChanged, welches die UI mitteilt, dass ein Property sich verändert hat:

    https://docs.microsoft.com/de-de/dotnet/api/system.componentmodel.inotifypropertychanged?view=netframework-4.7.2

    vor 12 Stunden schrieb Finux:

    Was ist eine ObservableCollection

    https://docs.microsoft.com/de-de/dotnet/api/system.collections.objectmodel.observablecollection-1?view=netframework-4.7.2

    da wie du siehst, diese bereits INotifyPropertyChanged implementieren. Das bedeutet, sehr vereinfacht gesagt, die OC WEIß wenn ein Element der OC sich verändert hat und gibt diese Info auch an die UI weiter. Ein Aufruf von OnPropertyChanged ist also auf eine OC nicht nötig.

    Wenn du eine normale List verwenden würdest, müsstest du bei jeder Operation, die diese Liste betrifft, ein OnPropertyChanged verwenden, damit die Klasser der UI weitergibt, dass die List sich verändert hat.

     

    Mich würden auch mal @Errraddicator und @Whiz-zarD Meinung hier interessieren, ihr postet doch öfters in C# Themen. 

    In deinem Fall bräuchtest du also Bindings auf deinen Dargestellten Text, Commands für die Buttons, und ein ViewModel welches die Properties darstellt für die TextBindings und den Commands.

  4. vor 49 Minuten schrieb Mttkrb:

    So sparst du dir die Zeile im Codebehind.

    Ja kann ich für meine Fälle nie nutzen, dafür habe ich diese schöne Sache :wub:

            public void CreateNewWindow<T>(double height, double width, string title, Type t, object vm) where T : new()
            {
                var svm = Convert.ChangeType(vm, t);
                var fenster = new T() as Window;
                fenster.DataContext = svm;
                fenster.Height = height;
                fenster.Width = width;
                fenster.Title = title;
                fenster.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                fenster.ShowDialog();
            }

    geht nur nicht wenn ich ne View mit Parameter initialisiere, passiert aber selten

  5. Wir brauchen echt die Info, wie du es machen willst. Es gibt mehrere Wege etwas in WPF zu machen. Wenn du MVVM lernen willst, bräuchtest du ne Klasse (ViewModel) die mit den ganzen Daten arbeitet. Dann hättest du in deiner UI nur noch Verweise (Bindings) auf die Daten und Befehle.

    In MVVM würde es (kurz unsauber hingeklatscht, weil ich selbst auch noch arbeiten muss ;) ) etwa so aussehen:

    public class Klasse : INotifyPropertyChanged
        {
            public event PropertyChangedEventHandler PropertyChanged;
    
            [NotifyPropertyChangedInvocator]
            protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
            {
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
            }
    
            public string Eingabe { get; set; }
            public string Ausgabe { get; set; }
            public ICommand Tuwas  => new RelayCommand(o => true, o => aufgehts());
    
            private void aufgehts()
            {
                Ausgabe = "Test";
                OnPropertyChanged(nameof(Ausgabe));
            }
        }
    <Window x:Class="WpfApp1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApp1"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <Grid>
            <TextBlock Text="{Binding Ausgabe, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" VerticalAlignment="Top"></TextBlock>
            <TextBox Text="{Binding Eingabe}" HorizontalAlignment="Left" VerticalAlignment="Top" Width="68" Margin="96,55,0,0"></TextBox>
            <Button Command="{Binding Tuwas}" Content="Klick Mich" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="96,78,0,0"></Button>
        </Grid>
    </Window>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                this.DataContext = new Klasse();
            }
        }
     public class RelayCommand : ICommand
        {
            private Predicate<object> _canExecute;
            private Action<object> _execute;
    
            public RelayCommand(Predicate<object> canExecute, Action<object> execute)
            {
                this._canExecute = canExecute;
                this._execute = execute;
            }
    
            public event EventHandler CanExecuteChanged
            {
                add { CommandManager.RequerySuggested += value; }
                remove { CommandManager.RequerySuggested -= value; }
            }
    
            public bool CanExecute(object parameter)
            {
                return _canExecute(parameter);
            }
    
            public void Execute(object parameter)
            {
                _execute(parameter);
            }
        }

    Wobei hier nicht alles schön ist. Ich setze den DataContext ungerne ins Codebehind. Wie gesagt wir müssen wissen welche Technologie bzw. wie du deine Lösung anstrebst. Wenn du Event basiert arbeiten willst, dann kannst du eigentlich gleich bei WinForms bleiben, dass ist nämlich so ziemlich der WinForms Style.

    Ein anderer Weg ist auch, CommandBindings in der UI zu definieren, die auf ein Event im CodeBehind zeigen. Gibt viele Wege...manche werden als sehr unsauber angesehen. 

    Edit: Der Code oben gibt nur was aus und soll dir ne Idee geben wie sowas aussehen kann. 

    RelayCommand dient vereinfacht gesagt zum Ausführen von Aktionen. OnPropertyChanged dient vereinfacht gesagt um zu "melden" dass man ein Property geändert hat (du siehst das in der UI ein UpdateSourceTrigger ist der auf PropertyChanged eingestellt ist).

    Ich würde es jetzt gerne ausführlicher erklären, aber wie gesagt: Ich muss arbeiten :D

     

  6. Bei mir war es eig. so: Jedesmal wenn ich einen Commit gemacht habe gab es dazu ne recht ausführliche Commit Message. Ich habe dann in *hust* recht großen Abständen die Commit Logs von Subversion geladen und mir daraus ein recht gutes Berichtsheft gebaut. Andere haben es ähnlich gemacht, sie haben ständig was in ihren Kalender reingeschrieben. Ich wollte den aber nicht zumüllen.

    Im Berichtsheft waren bei uns ganze Sätze vorgeschrieben.

    Mein Ausbilder und ich haben dann kurz zusammen monatlich (manchmal auch später) das Berichtsheft durchgegangen, da er wusste wie man manche Dinge besser beschreibt (war da anfangs recht unbeholfen was die IHK da genau will (wie detailliert usw. habe da im ersten Jahr schon von Anfang an alles Mögliche programmiert).

    Natürlich war das alles nicht optimal. Am Ende hatte ich aber ein recht ordentliches Berichtsheft. Schöner Ordner, jede Seite in Klarsichtsfolie, keine Rechtsschreibfehler....kein Prüfer hatte irgendwas auszusetzen oder irgendwelche Fragen. Mein Betrieb selbst hatte am Ende auch kaum was daran auszusetzen, da schon bekannt war, dass ich gehen werde. War also reine Formsache.

  7. Die zweite Aktion geht echt mal gar nicht. Ich würde schauen da so schnell wegzukommen wie nur möglich. Bei der ersten Aktion war mein Gedanke, dass dich evtl. jemand sich über dich beschwert hat. Hast du Leute dort mit denen du dich nicht gut verstehst, die so etwas tun würden? Jedenfalls Daumen hoch, dass du dich da nicht unterkriegen lässt

  8. vor 5 Stunden schrieb DieMstar:

    NET Framework, VB.NET, Windows Forms

    Darüber hinaus CleanCode und die dort angesprochenen Design Patterns und Grundlagen zur Software-Architektur sind in jedem Fall auch ein wichtiges Thema. Die weiteren Themen werden HTML, CSS, javascript und JS-Frameworks (speziell Angular), C#, MS SQL-Server, Multithreading usw.

    Auf nachfrage meinerseits hieß es eben das ich mich erstmal mit VB.NET beschäftigen soll.

    Toll du lernst jetzt VB.NET um später vermutlich in einem Team zu sein, welches hauptsächlich Webentwicklung macht. Sprich du kannst danach gleich mal C# lernen. Vor allem warum macht man in der Firma VB UND C# o.O

    Für mich hört es sich gerade so an, als ob man dich in .NET einarbeiten will und du dich erstmal um alte VB Projekte kümmern darfst.

  9. Ok vergiss was ich gesagt habe, ich war mir 100%zig sicher, dass man die Zuordnung von Click dann in der .Designer.vb sieht, aber da ist nix....hab ich wohl falsch in Erinnerung. Jedenfalls finde ichs gerade nicht in meinem Test.

    Nvm in c# finde ichs

    this.button1.Location = new System.Drawing.Point(559, 213);
    this.button1.Name = "button1";
    this.button1.Size = new System.Drawing.Size(75, 23);
    this.button1.TabIndex = 0;
    this.button1.Text = "button1";
    this.button1.UseVisualStyleBackColor = true;
    this.button1.Click += new System.EventHandler(this.button1_Click);

    aber nicht in VB...bin VB-blind

  10. Um es extrem simpel zu sagen: Delegaten sind ähnlich die Funktionszeiger (wie die Docs ja schon sagen). Sie können auf Methoden eines Objects, statischen Methoden oder anonymen Methoden verweisen. Du kannst auch dem Delegate ganze Objekte übergeben. Mir persönlich hat https://buildplease.com/pages/why-delegates/ gut geholfen zu verstehen, wie sie in der Praxis eingesetzt werden können. Du kannst halt in nem Delegate mehrere Sachen "abwickeln" und sparst dir so manchen Code immer wieder zu schreiben. Siehst du schön in den letzten zwei Codebeispielen auf der Seite.

     

     

  11. vor 2 Minuten schrieb patrickC64:

    Kleine Projekte, eigene Ideen steigern ungemein die Kreativität. Angefangen mit einfachen funktionen die dann mit einer GUI erweitert werden Step by Step.

    Macht auch voll Sinn ohne jegliches Wissen über .NET einfach mal so in die Tasten zu hauen. Werden ihre zukünftigen Kollegen sicher mögen, was sie sich da aneignet /ironieoff.

    Kann sie monatelang an ein privates Projekt arbeiten nur um dann in der Arbeit zu sehen, was sie alles missverstanden hat.

  12. Wenn du mit Java angefangen hast, dann würde ich erstmal den ".NET Guide" und dann den ".NET Framework-Leitfaden" durchgehen: https://docs.microsoft.com/de-de/dotnet/welcome

    Dadurch lernst du viel unabhängig von der .NET Sprache die du anwendest. Anschließend solltest du den "Win-Forms"-Leitfaden nehmen. Direkt anzufangen ist gut und schön, aber du solltest schon etwas rund um .NET wissen. Da du nicht ".NET-Core" verwendest, aufpassen dass du nicht in den Tutorials ".NET Core" und ".NET-Framework" vermischt.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...