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 Wasined
Thema: XAML: Visibility mit RelativeSource binden
Am im Forum: GUI: WPF und XAML

Hallo in die Runde!

Ich habe ein Datagrid, dass ich an eine ObservableCollection im ViewModel binde ("Parteien"). Das geht soweit.
Jetzt möchte ich die Sichtbarkeit einer Spalte an eine Bool binden ("Use Mail"). Das will leider nicht.


#region Liste
        public ObservableCollection<ListContent> Parteien
        {
            get { return _Parteien; }
            set { _Parteien = value; OnPropertyChanged(nameof(Parteien)); }
        }
        private ObservableCollection<ListContent> _Parteien;

public bool UseMail { get; set; } = true;


    <Window.Resources>
        <BooleanToVisibilityConverter x:Key="boolToVis" />
    </Window.Resources>

<DataGrid Margin="5" ItemsSource="{Binding Parteien, Mode=TwoWay}" SelectionMode="Single"
            AutoGenerateColumns="False" CanUserSortColumns="False" CanUserAddRows="False" CanUserDeleteRows="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Rolle" Binding="{Binding Rolle, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="*"/>
                <DataGridTextColumn Header="Name" Binding="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="*"/>
                <DataGridTextColumn Header="E-Mail" Binding="{Binding Email, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="*" 
                                    Visibility="{Binding Path=DataContext.UseMail, Converter={StaticResource boolToVis}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"/>
                <DataGridCheckBoxColumn Header="Wahl" Binding="{Binding Wahl, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="Auto"/>
            </DataGrid.Columns>
        </DataGrid>

Der binding Error sagt mir:
Quelle nicht gefunden: RelativeSource FindAncestor, AncestorType='System.Windows.Window', AncestorLevel='1'

Wenn ich beispielsweise die Width einer Column auf die gleiche Weise binden möchte geht das problemlos.... Ich vermute, dass sich die RelativeSource mit dem BoolToVis Converter spießt.

Danke für Tipps

Thema: Installer mit Updater
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo in die Runde!

Ich suche für eine Windows Desktop App nach einem Installer mit integriertem Updater.

MSIX sieht soweit gut aus, allerdings stören mich ein paar Dinge:
- Man kann den Installationspfad nicht angeben
- Die Updates sind nicht optional
- Es wird kein Desktop Icon erstellt
- Es kann vor der Installation kein Lizenztext angezeigt werden

... zumindest soweit mein Verständnis, bitte mich ggf. zu korrigieren.

Ein weiterer Punkt der mir stört ist folgender: MSIX packt immer die gesamte Installation. Diese wird dann entsprechend auch vom User heruntergeladen.
Jetzt habe ich die Situation, dass die Hauptinstallation aufgrund zahlreicher Anhängsel relativ groß ist (ca. 1 GB). Ich will aber verhindern, dass bei einem Autoupdate immer das gesamte Programm mit allen Anhängen heruntergeladen werden muss. Stattdessen soll ein kleines Updatepaket mit den nötigen Files geladen werden (die ich vorher bereitstellen und auf den Server laden würde).

Daher meine Frage: Könnt Ihr mir hierzu empfehlungen abgeben? Liege ich falsch und MSIX ist doch so custumizable? Kennt ihr gute 3rd Party Produkte?

Danke im Voraus

Thema: 2D ObservableCollection an DataGrid binden
Am im Forum: GUI: WPF und XAML

Zitat
Es gibt aber eine Möglichkeit einen Indexer im XAML zu binden
Hast Du da ein Beispiel für mich?
Zitat
Problem ist aber dass du die Anzahl der Elemente zur Compilerzeit nicht weißt.
Nein, ich möchte immer die ersten 10 Einträge sehen. Wenn weniger eingelesen wurde soll es leer sein. Wenn mehr eingelesen wurde werden die Werte mit Index > 10 einfach nicht angezeigt.

Thema: 2D ObservableCollection an DataGrid binden
Am im Forum: GUI: WPF und XAML

Hallo in die Runde!

Ich möchte eine csv Datei einlesen und in ein Datagrid ausgeben.
Da ich nicht weiß wie viele Zeilen und Spalten die CSV Datei hat mache ich das Einlesen über eine 2 dimensionale ObservableCollection.

Die sehen grundsätzlich so aus:


        public ObservableCollection<ObservableCollection<string>> ImportGrid
        {
            get { return _ImportGrid; }
            set { _ImportGrid = value; OnPropertyChanged(nameof(ImportGrid)); }
        }
        private ObservableCollection<ObservableCollection<string>> _ImportGrid;

        public ObservableCollection<string> ImportSpalten
        {
            get { return _ImportSpalten; }
            set { _ImportSpalten = value; OnPropertyChanged(nameof(ImportSpalten)); }
        }
        private ObservableCollection<string> _ImportSpalten;

Später kommt dann das Einlesen, das funktioniert auch. Meine 2D ObservableCollection ist also korrekt gefüllt.
Wo es krankt ist das Binden an ein DataGrid im Xaml. Das sieht so aus:


<DataGrid CanUserSortColumns="False" CanUserAddRows="False" AutoGenerateColumns="False" CanUserDeleteRows="True"
                  ItemsSource="{Binding ImportGrid}">
            <DataGrid.Columns>
                <md:DataGridTextColumn Binding="{Binding ImportSpalten[0]}"/>
                <md:DataGridTextColumn Binding="{Binding ImportSpalten[1]}"/>
                ....
            </DataGrid.Columns>
        </DataGrid>

Hierbei funktioniert das "Binding="{Binding ImportSpalten[0]}" etc. " natürlich nicht.
Ich möchte nicht einfach alle eingelesenen Spalten darstellen sondern konkret die ersten X.
Wie kann ich also die Werte der Spalten anhand ihres Index abfragen?
Oder bin ich da generell auf dem Holzweg?

Danke für Tipps


Thema: Wie kann ich ein Treeview speichern und beim Start wieder auslesen?
Am im Forum: GUI: WPF und XAML

Ok, ich verstehe das jetzt nicht ganz. Wenn ich mich an ein Forum wende dann vermutlich deshalb weil ich durch meine eigene Recherche nicht ans Ziel gekommen bin. Wenn jemand die Frage nicht mag muss er ja nicht antworten.

Thema: Wie kann ich ein Treeview speichern und beim Start wieder auslesen?
Am im Forum: GUI: WPF und XAML

Ok, dann habe ich mich vielleicht nicht so gut ausgedrückt.
Ich suche nach einem Beispielprojekt oder Tutorial von dem ich das Speichern und Lesen einer Listview lernen kann. Meine Listview enthält Header und Buttons.
Im Idealfall würde ich diese Struktur gerne in App.Properties abspeichern, das ich mittels Settings.Default.Variable anspreche. Wenn das nicht empfehlenswert ist auch gerne als XML Datei beispielsweise.

Danke!

Thema: Wie kann ich ein Treeview speichern und beim Start wieder auslesen?
Am im Forum: GUI: WPF und XAML

Hallo in die Runde!

Ich programmiere gerade eine c# Anwendung mit WPF, NET 4.8, bin aber noch ein relativer Anfänger.

Ich stehe gerade vor folgender Aufgabe: Ich habe einen Dialog mit einem Treeview. In dem Treeview kann ich Objekte einfügen bzw die Reihenfolge und die Stufe der Objekte ändern. Das geht soweit.
Ich möchte jetzt die Anordnung und die vorhandenen Objekte speichern und beim Neustart des Programmes auch wieder auslesen.
Bis dato habe ich da leider nur Artikel für Windows Forms gefunden, ich benutze aber wie gesagt WPF.
Die Items meiner List sind nur Header und Buttons.
Da der User das nicht oft ändern wird würde ich es am liebsten eigentlich in den Programsettings speichern. Geht das? Wenn nein bitte ich um Empfehlungen oder noch besser Beispiele wie man das sauber macht.

Vielen Dank im Voraus!
LG

Thema: Liste von Objekten befüllen und Items wieder löschen
Am im Forum: Grundlagen von C#

Super, danke, das Find hat mir geholfen!

Thema: Liste von Objekten befüllen und Items wieder löschen
Am im Forum: Grundlagen von C#

Hallo!

Ich bin recht neu mit C# und hänge gerade beim Thema aus einer List von Objekten einen Eintrag zu löschen bzw. auf ein Objekt nach dem Erstellen wieder zuzugreifen.

Ich habe eine Klasse, die Daten zu einem Kontakt enthält:

    class CKontaktDat
    {
        public string Name { get; set; } = string.Empty;
        public int ID { get; set; } = -1;
    } 

Ich möchte nun eine List damit befüllen und danach auch wieder einzelne Einträge löschen:

        public MainWindow()
        {
            List<CKontaktDat> kon = new List<CKontaktDat>();
            kon.Add(new CKontaktDat { Name = "Franz" , ID = 0});
            kon.Add(new CKontaktDat { Name = "Sepp", ID = 1 });
            kon.Add(new CKontaktDat { Name = "Thomas", ID = 2 });
            
           kon.Remove(new CKontaktDat{ Name = "Sepp" });
        }

Das will aber so nicht, der Eintrag mit der ID = 1 wird nicht gelöscht. Ich vermute, dass das damit zu tun hat, dass ich nicht aufs richtige Objekt zugreife, aber ich konnte leider nichts brauchbares in die Richtung finden.
Danke für Rückmeldungen!

Thema: SQLite funktioniert in VS 2019 nicht ordentlich. Alternativen?
Am im Forum: Datentechnologien

Hi Coffeebean!

Ich bin am Schwanken, runtergebrochen lautet die Frage:
SQLite oder was anderes?
Und
Was sind gute Tutorials zur jeweiligen Wahl?

LG
Wasined

Thema: SQLite funktioniert in VS 2019 nicht ordentlich. Alternativen?
Am im Forum: Datentechnologien

Hallo in die Runde!

Ich brauche für eine WPF Desktop App eine lokale Datenbank um Strings, Zahlen, etc zu speichern.
Ich verwende MS VS 2019, C# Net 4.8.
Mein Plan war eine SQLite Datenbank zu verwenden, da es sich um ein weit verbreitetes und gut dokumentiertes Format handelt.

Nach ersten Schritten musste ich feststellen, dass die Implementierung von SQLite in Visual Studio nur bei VS 2015 ordentlich funktioniert, jedoch nicht bei VS 2015 und VS 2019.

Daher konkret 2 Fragen:

1. Liege ich vielleicht falsch und die Implementierung geht eh einfach und sauber? Wenn ja, kennt wer ein gutes Tutorial?

2. Wenn es tatsächlich etwas unhandlich ist mittlerweile: Welche Alternativen an lokalen Datenbanken könnt ihr empfehlen? Wichtig wäre, dass es sich um eine open Source Datenbank handelt, sodass der User im Notfall die Datenbank auch ohne unsere App aufkriegt. Weiters wäre eine gute Dokumentation und/ oder Tutorials natürlich ein Hit.

Vielen Dank im Voraus!

Thema: Wie ein wechselbares Userinterface erstellen?
Am im Forum: GUI: WPF und XAML

Vielen Dank für die Rückmeldung. Ich habe kurz über das Thema gesehen. Ist es mit den Themes nur möglich eine farbliche Anpassung zu machen oder kann man mit einem Theme auch die komplette Position diverser Knöpfe/Eingabefelder/etc ändern, hinzufügen oder entfernen?

Thema: Wie ein wechselbares Userinterface erstellen?
Am im Forum: GUI: WPF und XAML

Hallo!

Ich bin ziemlich neu mit c# und versuche derzeit das folgende Problem zu lösen.
Meine Anwendung ist in VS 2019 mit WPF erstellt. Es ist im Grunde eine Anwendung, in der der Benutzer Texte/Daten/Nummern etc. in Eingabefelder schreiben kann und die Anwendung speichert diese in einer Datenbank. So weit, so gut.

Ich suche nun nach einer Möglichkeit, eine Art austauschbares UI zu erstellen, bei der der Benutzer entscheiden kann, welche Oberfläche ihm am besten gefällt.
Die Änderungen können von leicht unterschiedlichen Farben eines Buttons bis hin zu einer kompletten Neugestaltung des gesamten UI mit verschiedenen Buttons und gleichen Buttons an verschiedenen Stellen etc. reichen.
Darüber hinaus suche ich nach einer Art Framework, das es einfach macht, die Vielfalt der UIs in Zukunft zu erweitern. Sollte also ein Benutzer mit den derzeit angebotenen UIs nicht zufrieden sein, sollte es für mich relativ einfach sein, ein neues UI zu erstellen, das seinen Anforderungen entspricht.

Ich würde mich freuen, wenn mir jemand einen Tipp geben könnte - vielen Dank im Voraus!