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 Caveman
Thema: Wie kann ich im WPF an Properties meiner Klasse binden?
Am im Forum: GUI: WPF und XAML

In der Regel wird alles im XAML definiert. Im MVVM Pattern wird normalerweise nichts, aber auch gar nichts im Code behind programmiert.
Und ich fürchte, du hast ein Verständnisproblem mit den View Models. Willst Du für jedes Steuerelement ein eigenes ViewModel machen? Also auch ein CheckBoxViewModel, RadioButtonViewModel, TextBlockViewModel, DataGridViewModel, ...?
Was müssen Deine ViewModels außergewöhnliches können - außer Text anzeigen - dass man dies so wie von Dir gewünscht, definieren müßte?
Ändert sich die Ansicht?

Thema: Wie kann ich im WPF an Properties meiner Klasse binden?
Am im Forum: GUI: WPF und XAML

Servus,

warum definierst Du den DataContext im XAML und im Code behind?

Thema: Kann man einer TextBox oder allgemein Steuerelementen neue Attribute zuweisen?
Am im Forum: GUI: WPF und XAML

Oder man verwendet dafür die Tag-Eigenschaft.

Thema: Spalten aus einer Exceltabelle zur Laufzeit zu einem Datagrid hinzuladen - Binding im ViewMode
Am im Forum: GUI: WPF und XAML

Hallo Th69,

es soll nach Möglichkeit eine beliebige Anzahl an Spalten hinzugefügt werden können.
Meine bisherige ItemsSource ist eine ObservableCollection von ViewModels, die eine Datenzeile repräsentieren - also ganz klassisch!
Die DataTable hatte ich gleich zu Beginn in betracht gezogen, dann aber ziemlich schnell verworfen, weil ich mehrfach gelesen habe, dass man diese nicht mehr verwenden sollte.
Werde mich aber am kommenden WE dann doch nochmals näher damit auseinandersetzen.

Thema: Spalten aus einer Exceltabelle zur Laufzeit zu einem Datagrid hinzuladen - Binding im ViewMode
Am im Forum: GUI: WPF und XAML

Hallo,

ich habe ein Datagrid, das einige fest definierte Spalten hat. Nun möchte ich gerne aus einer Exceltabelle willkürliche Spalten zur Laufzeit hinzuladen.
Das hinzuladen der Spalten an sich ist (im Moment) nicht das Problem. Seit ein paar Tagen mache ich mir aber Gedanken darüber, wie ich die Excelspalten mit meinem ViewModel verbinde, komme aber auf keine Lösung. Wie muss ich das angehen?

Thema: Wieso bekomme ich eine Index Exception beim Zugriff auf ein mehrdimanesionales Array?
Am im Forum: Grundlagen von C#

Dein Problem ist, dass Du mit

for (int j = 0; j < IntArray.Length; j++)
ebenfalls nur die erste Dimension abfrägst.

Ändere die innere Schleife, so dass die zweite Dimension abgefragt wird.

for (int j = 0; j < IntArray.GetLength(1); j++)

Thema: Wie implementiere ich einen Zurück-Button in einer App-Navigation mit MVVM?
Am im Forum: GUI: WPF und XAML

Hallo CombatKarl,

ich habe da mal eine Frage. Verwendest Du die Prism library?

public class MainVM : BindableBase
deutet jedenfalls darauf hin. Es gäbe nämlich in den Beispielprogrammen zu Prism mehrere Beispiele zur Navigation. Vielleicht helfen Dir diese weiter! Ich stand vor einigen Wochen vor dem gleichen Problem und mir haben diese Beispiele schon enorm geholfen.

Thema: Warum hat im C# & XAML ein Label hat immer eine 0 vor der eigentlichen Zahl?
Am im Forum: GUI: WPF und XAML

Hallo,

in Deinem XAML sind alle Buttons ausser der 0 und 1 tot, da kein Click Event definiert ist.
Die beiden Buttons 0 und 1 definieren das gleiche Event, aber die zugehörige Cmd_1_Click Methode hast Du nicht gepostet.
Stattdessen aber Cmd_0_Click, die aber keinem Button zugeordnet ist.
In Deiner Cmd_0_Click Methode wird nicht ersichtlich, welcher Button gedrückt ist und einfach immer nur stur eine weitere 0 im Label angefügt.

Deswegen verwende ich jetzt mal die Methode als Cmd_1_Click für eine mögliche Lösung:

        private void Cmd_1_Click(object sender, RoutedEventArgs e)
        {
            Button button = sender as Button;
            if (lbl_rechenzeichen.Content == "")
            {
                Lbl_rechenoperator_1.Content = $"{Lbl_rechenoperator_1.Content}{button.Content}";
            }
            else
            {
                lbl_rechenoperator_2.Content = $"{lbl_rechenoperator_2.Content}{button.Content}";
            }
        }

Das ist jetzt WPF, da ich von Xamarin keinen Plan habe!

Thema: Form erweitern oder andocken
Am im Forum: GUI: Windows-Forms

Zitat von Rico913
Hi,
In diesem Menü möchte ich per Radiobuttons verschiedene Optionen einzelner Module anbieten. D.h. ich habe zur Zeit 3 Optione, die ich mit einander kombinieren kann oder auch alle anhaken.

Radiobuttons kann man nicht kombinieren, denn es kann immer nur einer aktiv sein. Du meinst sicherlich die Checkbox.

Ich hatte bisher noch nicht so einen Anwendungsfall, aber ich könnte mir vorstellen, dass man eine Variable, die die Kombinationen der Checkboxen darstellt, entsprechend maskiert.
Bei wenigen Optionen denke ich aber, dass das mit If schon ok ist.
Wie genau sieht denn bei Dir die Bedingung aus?

Thema: [erledigt] Snake-Spiel startet neu, wenn zwei Tasten gleichzeitig gedrückt sind
Am im Forum: GUI: Windows-Forms

Ach schade, dass das Projekt entfernt wurde. Hätte mir das gerne angesehen!

Thema: Textbox Binding auf seperater Page
Am im Forum: GUI: WPF und XAML

In Deinem ViewModel kannst Du die InputClass referenzieren.
Dann das Binding auf InputClass.Property setzen.
Sollte eigentlich so funktionieren.

Thema: [OpenXml] Fehler im Stylesheet für Fontsize
Am im Forum: Office-Technologien

Ursprünglich hatte ich die OpenXML Version 2.5 verwendet, da hierbei auch das Productivity Tool im Paket mit enthalten ist. Diese Version unterstützt Office von 2007 - 2013.
Und dass so was "einfaches" wie der Fontsize nicht unterstützt wird, kann ich mir nicht vorstellen!
Werde wohl nochmals von ganz vorne beginnen müssen, und die Styles schrittweise hinzufügen.

Thema: [OpenXml] Fehler im Stylesheet für Fontsize
Am im Forum: Office-Technologien

Hallo,

ich versuche mit dem OpenXML 2.5 bzw. 2.10 eine Exceldatei zu erzeugen.
Die Datei wird erstellt und kann auch mit Excel (2013/2016) geöffnet werden, nachdem die Fehler im Stylesheet durch Excel bereinigt (entfernt) wurden.

Ich schau mir jetzt schon seit Stunden den Vergleich im OpenXML Productivity Tool 2.5 an, aber ich sehe nicht, wo der Fehler in Fontsize liegen soll.
Die Fehlermeldung im Anhang.
Liegt das am x-Namespace?

Fehlerhafter Stylesheet (entpackte styles.xml aus der Exceldatei):

<?xml version="1.0" encoding="utf-8"?>
<x:styleSheet xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
	<x:fonts x14ac:knownFonts="1" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
		<x:font>
			<x:name val="Consolas" />
			<x:family val="1" />
			<x:scheme val="minor" />
			<x:sz val="14" />
			<x:b />
			<x:color rgb="FF000000" />
		</x:font>
		<x:font>
			<x:name val="Consolas" />
			<x:family val="1" />
			<x:scheme val="minor" />
			<x:sz val="10" />
			<x:color rgb="FF000000" />
		</x:font>
	</x:fonts>
	<x:fills>
		<x:fill>
			<x:patternFill patternType="none" />
		</x:fill>
	</x:fills>
	<x:borders>
		<x:border />
	</x:borders>
	<x:cellXfs>
		<x:xf fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" />
		<x:xf fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" />
	</x:cellXfs>
</x:styleSheet>

Nach der Reparatur durch Excel (entpackte styles.xml aus der Exceldatei):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" 
			xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
			mc:Ignorable="x14ac x16r2 xr" 
			xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" 
			xmlns:x16r2="http://schemas.microsoft.com/office/spreadsheetml/2015/02/main" 
			xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision">
	<fonts count="3" x14ac:knownFonts="1">
		<font>
			<b/>
			<sz val="14"/>
			<color rgb="FF000000"/>
			<name val="Calibri"/>
			<family val="1"/>
			<scheme val="minor"/>
		</font>
		<font>
			<b/>
			<sz val="14"/>
			<color rgb="FF000000"/>
			<name val="Consolas"/>
			<family val="3"/>
		</font>
		<font>
			<sz val="10"/>
			<color rgb="FF000000"/>
			<name val="Consolas"/>
			<family val="3"/>
		</font>
	</fonts>
	<fills count="2">
		<fill>
			<patternFill patternType="none"/>
		</fill>
		<fill>
			<patternFill patternType="gray125"/>
		</fill>
	</fills>
	<borders count="1">
		<border>
			<left/>
			<right/>
			<top/>
			<bottom/>
			<diagonal/>
		</border>
	</borders>
	<cellStyleXfs count="1">
		<xf numFmtId="0" fontId="0" fillId="0" borderId="0"/>
	</cellStyleXfs>
	<cellXfs count="3">
		<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>
		<xf numFmtId="0" fontId="1" fillId="0" borderId="0" xfId="0" applyFont="1"/>
		<xf numFmtId="0" fontId="2" fillId="0" borderId="0" xfId="0" applyFont="1" applyFill="1" applyBorder="1"/>
	</cellXfs>
	<cellStyles count="1">
		<cellStyle name="Standard" xfId="0" builtinId="0"/>
	</cellStyles>
	<dxfs count="0"/>
	<tableStyles count="0" defaultTableStyle="TableStyleMedium2" defaultPivotStyle="PivotStyleLight16"/>
	<extLst>
		<ext uri="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}" xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main">
			<x14:slicerStyles defaultSlicerStyle="SlicerStyleLight1"/>
		</ext>
		<ext uri="{9260A510-F301-46a8-8635-F512D64BE5F5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main">
			<x15:timelineStyles defaultTimelineStyle="TimeSlicerStyleLight1"/>
		</ext>
	</extLst>
</styleSheet>

Hat jemand einen Tip?

Thema: C# - Programm, Menü funktioniert leider nicht
Am im Forum: Grundlagen von C#

Servus,

Du brauchst die geschweiften Klammern bei den If-Anweisungen.

                if (eingabe == "A")
                {
                    Console.WriteLine("***Berechnungen von Verbrennungsenthalpien der KWS***");
                    Console.WriteLine("***nach dem Satz von Hess***");
                    Console.WriteLine("Bildungsenthalpie des zu verbrennenden KWS?");
                    string DBHM = Console.ReadLine();
                    double X = double.Parse(DBHM);
                    Console.WriteLine("Stöchiometriezahl des Kohlendioxids?");
                    string SZCO2 = Console.ReadLine();
                    double Y = double.Parse(SZCO2);
                    Console.WriteLine("Stöchiometriezahl des Wassers?");
                    string SZH2O = Console.ReadLine();
                    double Z = double.Parse(SZH2O);
                    double Verbrennungsenthalpie = Z * (-242) + Y * -(394) - X;
                    Console.WriteLine("Verbrennungsenthalpie in kJ/mol:");
                    Console.WriteLine(Verbrennungsenthalpie);
                }
Außerdem ist es ratsam else if in diesem Fall zu verwenden oder gleich eine switch Anweisung.

Thema: Wie dynamische Darstellung von Bildern mit WPF?
Am im Forum: GUI: WPF und XAML

Anbei ein komplettes Beispiel:

Thema: Daten zwischen mehreren Fenstern teilen
Am im Forum: Grundlagen von C#

Du könntest ein Ereignis definieren, dass in Hinzufügen ausgelöst wird und im MainWindow abboniert wird. In den EventArgs sind die hinzuzufügenden Werte enthalten.

Thema: Wie dynamische Darstellung von Bildern mit WPF?
Am im Forum: GUI: WPF und XAML

Zitat von ThomasC
es ist so wenn jetzt 4 Zuschnitte also kartons rauf kommen und die Palette 1800mm hoch ist kommen z.b bei einer Gewissen stärke des Kartons 4000 Zuschnitte rauf 10 Reihen hoch jeweils 100 *4 Pro reihe. fürs verständins.

Das hab ich auch nach mehrmaligem Lesen gar nicht verstanden.
Aber Du könntest 4 Bilder haben: Kartons_01.png, Kartons_02.png, Kartons_03.png, Kartons_04.png

In Deinem ViewModel gibt es dann eine Property Image.

        public Uri Image
        {
            get { return image; }
            set
            {
                if (image != value)
                {
                    image = value;
                    OnPropertyChanged();
                }
            }
        }

Diese Property wird ebenfalls im ViewModel bestimmt.

        private void Calculate()
        {
            //Errechne die Anzahl der Kartons und speichere das Ergebnis in Result
            Image = new Uri($"pack://application:,,,/Resources;component/Images/Kartons_{ Result:D2}.png", UriKind.Absolute);
        }

Im Xaml dann das Image binden:
            <Image x:Name="ImgKarton" 
                   Height="32" 
                   Width="32" 
                   Source="{Binding Image}" />

Thema: Wie kann ich Werte aus Excel lesen und abspeichern?
Am im Forum: Office-Technologien

Zitat von MrSparkle
Zitat von Caveman
Gängige Praxis für *.xlsx ist die Verwendung von Interop.Excel.

Interop setzt eine Installation von Excel voraus, daher ist Open XML inzwischen die "gängige Praxis". Keine Ahnung, was du mit "leere Zellen handeln" meinst.

Okay, okay, im professionellen Bereich sicherlich, aber nicht im Hobbybereich, dem 98 Prozent der Forumsmitglieder hier angehören!

Wenn ich tabellarische Daten habe und diese leere Zellen enthalten, dann verschieben sich die Daten beim zeilenweisen auslesen. Und das muss man beachten!

Thema: Wie kann ich Werte aus Excel lesen und abspeichern?
Am im Forum: Office-Technologien

Servus,

welches Format hat die Excel-Datei? *.xlsx oder *.csv
Am einfachsten wäre wohl die Verwendung des CSV-Formats, am schwierigsten die Verwendung von OpenXML (persönliche Meinung, da man leere Zellen handeln muß)
Gängige Praxis für *.xlsx ist die Verwendung von Interop.Excel.
Es gibt von Microsoft ein Beispiel nur leider finde ich den Link dazu gerade nicht.

Thema: Wie kann ich im WPF mit MVVM über eine Navigation verschiedene Seiten ein- und ausblenden?
Am im Forum: GUI: WPF und XAML

Servus,

hört sich für mich nach DataTemplates und DataTrigger an.
Hilft das weiter?

    <Window.Resources>
        <DataTemplate x:Key="StartPageTemplate" DataType="{x:Type vm:StartPageViewModel}">
            <v:StartPageControl />
        </DataTemplate>
        <DataTemplate x:Key="InputPageTemplate" DataType="{x:Type vm:InputPageViewModel}">
            <local:InputPageControl />
        </DataTemplate>
    </Window.Resources>
    
    <Grid>
        <ContentControl x:Name="MainContent" Content="{Binding}">
            <ContentControl.Style>
                <Style TargetType="ContentControl">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding IsStartPage}" Value="True">
                            <Setter Property="ContentTemplate" Value="{StaticResource StartPageTemplate}" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding IsStartPage}" Value="False">
                            <Setter Property="ContentTemplate" Value="{StaticResource InputPageTemplate}" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ContentControl.Style>
        </ContentControl>
    </Grid>

Thema: Wie kann ich an an Elemente in einem Dictionary binden?
Am im Forum: GUI: WPF und XAML

1. Dein Getter in der IbisDS001 Klasse gibt immer eine neue Collection mit dem Sting 0001 zurück. Deswegen erscheinen Deine Änderungen nicht.

2.

Zitat
was an und für sich mit den Observable-Objekten nicht erforderlich sein müßte
Das ist falsch gedacht. Die ObservableCollection benachrichtigt nur über die Anzahl der Elemente in der Sammlung, nicht über Änderungen am Wert. Deswegen erscheinen Deine Änderungen nicht.

Ich habe nun folgende Klassen etwas abgeändert und die neue Klasse Part hinzugefügt.

        public override ObservableCollection<Part> Parts { get; }

        public IbisDS001()
        {
            Parts = new ObservableCollection<Part>
            {
                new Part { Number = 1 }
            };
        }
    }


    public class Part : INotifyPropertyChanged
    {
		private int number;

		public int Number
		{
			get { return number; }
			set
			{
				if (number != value)
				{
					number = value;
					OnPropertyChanged(nameof(Number));
				}
			}
		}

		public event PropertyChangedEventHandler PropertyChanged;

		protected virtual void OnPropertyChanged(string propertyName)
		{
			PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
		}
	}
<Window x:Class="MyCsharp.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:MyCsharp"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">

    <Window.DataContext>
        <local:MainWindowViewModel x:Name="ViewModel" />
    </Window.DataContext>
    
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <TextBox x:Name="LineDS001Textbox" Grid.Row="0" Text="{Binding IbisDictionary[IbisDS001].Parts[0].Number, Mode=TwoWay, StringFormat=\{0:D4\}, UpdateSourceTrigger=PropertyChanged}" />
        <Button Grid.Row="1" />
    </Grid>
</Window>

Thema: Wie kann ich zwei unabhängige Applikationen mit Messaging miteinander kommunizieren lassen?
Am im Forum: Rund um die Programmierung

Danke für die Infos! Ich werde mich mit Reactive Extensions am Wochenende auseinandersetzen!

Thema: Wie kann ich zwei unabhängige Applikationen mit Messaging miteinander kommunizieren lassen?
Am im Forum: Rund um die Programmierung

Ja, es geht nur um Übung und Zeitvertreib (wegen Covid19 :))
Ich habe das jetzt prinzipiell ans Laufen bekommen.

    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, Core.ISampleEvent> eventCatalog = new Dictionary<string, Core.ISampleEvent>();
            Sender sender = new Sender(eventCatalog);
            Receiver receiver = new Receiver(eventCatalog);

            sender.Raise();
            Console.ReadKey();
        }
    }

    public class Sender
    {
        private Dictionary<string, Core.ISampleEvent> catalog;

        public Sender(Dictionary<string, Core.ISampleEvent> eventCatalog)
        {
            catalog = eventCatalog;
            catalog.Add("OnUpdate", new Core.SampleEvent());
        }

         public void Raise()
        {
            catalog["OnUpdate"].Raise();
        }
    }

    public class Receiver
    {
        private Dictionary<string, Core.ISampleEvent> catalog;

        public Receiver(Dictionary<string, Core.ISampleEvent> eventCatalog)
        {
            catalog = eventCatalog;
            catalog["OnUpdate"].OnUpdateEvent += Receiver_OnUpdateEvent;
        }

        private void Receiver_OnUpdateEvent(object sender, EventArgs e)
        {
            Console.WriteLine("Message received");
        }
    }

    public interface ISampleEvent
    {
        event SampleEvent.SampleEventHandler OnUpdateEvent;

        void Raise();
    }

    public class SampleEvent : ISampleEvent
    {
        public delegate void SampleEventHandler(object sender, EventArgs e);

        public event SampleEventHandler OnUpdateEvent;

        public SampleEvent()
        {
        }

        public void Raise()
        {
            OnUpdateEvent?.Invoke(this, EventArgs.Empty);
        }
    }

Eigentlich wäre mein Ziel gewesen, dass ich keine Eventklasse erstellen muss, sondern dieses einfach in ds Dictionary packen kann. Das geht aber offensichtlich nicht!

Thema: Wie kann ich zwei unabhängige Applikationen mit Messaging miteinander kommunizieren lassen?
Am im Forum: Rund um die Programmierung

Hallo,
ich will mich endlich mal mit dem Thema Events auseinandersetzen.
Dafür habe ich mir eine Konsolenanwendung mit zwei Klassenbibliotheken als Testprojekt angelegt.
Die zwei Klassenbibliotheken (Sender und Receiver) kennen sich nicht gegenseitig, sollen aber miteinander kommunizieren. Mein Ansatz ist nun, dass ich beiden Modulen ein Dictionary<string, delegate> injiziere und darüber die Kommunikation laufen lasse.
Ich weiß nicht, ob der Ansatz überhaupt funktioniert, denn was ich auch probiere, der Delegat in dem Dictionary ist immer null.

Mein derzeitiger Stand auf der Sender-Seite sieht so aus;

    public class Sender
    {
        private Dictionary<string, Delegate> catalog;

        public event EventHandler OnUpdate;

        public Sender(Dictionary<string, Delegate> eventCatalog)
        {
            catalog = eventCatalog;
        }

        public void Init()
        {
            catalog.Add("OnUpdate", OnUpdate);
        }

        public void Raise()
        {
            OnUpdate?.Invoke(this, EventArgs.Empty);
        }
    }

Thema: Wie kann ich Dateinamen nach ihrer Dateiendung filtern?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Es gibt ja noch die Path.GetExtension Methode.
Damit kann man dann einen Stringvergleich machen und braucht keine Regenechse.

Path.GetExtension

Thema: Zahlen aufsummieren nach Keyword
Am im Forum: Grundlagen von C#

Die Aufgabenstellung hat mich interessiert ;)

using System;
using System.Collections.Generic;

namespace MyCSharp122687
{
    class Program
    {
        private static List<string> text = new List<string>();
        private static Dictionary<string, List<int>> groups = new Dictionary<string, List<int>>();

        static void Main(string[] args)
        {
            text.Add("Hund, 1, 2, 3");
            text.Add("Katze, 1, 2, 3");
            text.Add("Hund, 2, 3, 4");

            foreach (string entry in text)
            {
                string[] textblocks = entry.Split(',');
                string[] trimmedTextBlocks = TrimTextBlocks(textblocks);
                if (groups.ContainsKey(trimmedTextBlocks[0]))
                {
                    AddValues(trimmedTextBlocks);
                }
                else
                {
                    List<int> numbers = new List<int>();
                    for (int i = 0; i < textblocks.Length - 1; i++)
                    {
                        numbers.Add(0);
                    }
                    groups.Add(trimmedTextBlocks[0], numbers);

                    AddValues(trimmedTextBlocks);
                }
            }

            //Output
            foreach (KeyValuePair<string, List<int>> group in groups)
            {
                Console.Write(group.Key);
                foreach (int number in group.Value)
                {
                    Console.Write(" | ");
                    Console.Write(number);
                }
                Console.WriteLine();
            }
            Console.ReadKey();
        }

        /// <summary>
        /// Add values to dictionary
        /// </summary>
        /// <param name="textblocks">The splitted representation of a record in the input file</param>
        private static void AddValues(string[] textblocks)
        {
            List<int> numbers = groups[textblocks[0]];
            for (int i = 1; i < textblocks.Length; i++)
            {
                if (int.TryParse(textblocks[i], out int number))
                {
                    numbers[i - 1] += number;
                }
                else
                {
                    throw new ArgumentException();
                }
            }
        }

        /// <summary>
        /// Remove all leading and trailing whitespaces
        /// </summary>
        /// <param name="textblocks">The splitted representation of a record in the input file</param>
        /// <returns>The trimmed text blocks</returns>
        private static string[] TrimTextBlocks(string[] textblocks)
        {
            string[] returnValue = new string[textblocks.Length];
            for (int i = 0; i < textblocks.Length; i++)
            {
                returnValue[i] = textblocks[i].Trim();
            }
            return returnValue;
        }
    }
}

Thema: Wie Perl in C# als DLL importieren?
Am im Forum: Rund um die Programmierung

Von ActiveState gibt/gab es was.
Active State PDK - PerNet

Thema: Wie Perl in C# als DLL importieren?
Am im Forum: Rund um die Programmierung

Du könntest in dem Perl Skript die zu verwendende Version angeben.

#!/usr/bin/perl -w
use strict;
use v5.016;

Damit wird die Perl Version 5.16 verwendet.

Thema: Templates in einem TabControl umschalten
Am im Forum: GUI: WPF und XAML

Hallo,

Du meinst, der DataType vom Template LoginContentDataTemplate muss CcLoginViewModel sein?

Ich werde das nochmals durchprobieren, obwohl ich mir sicher bin, dass ich das gestern schon gemacht habe.

Thema: Resource Dictionary: StaticResource im Setter eines Styles einsetzen
Am im Forum: GUI: WPF und XAML

Hallo,
die BackgroundProperty muss vom Typ SolidColorBrush sein!
Außerdem stimmt an mehreren Stellen die Syntax nicht ganz.


    <Color x:Key="TxtDarkColor">#ebebeb</Color>
    <SolidColorBrush x:Key="BackgroundBrush" Color="{StaticResource TxtDarkColor}" />
    
    <Style x:Key="Test" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="{StaticResource BackgroundBrush}"></Setter>
    </Style>

        <Button Style="{StaticResource Test}"/>