Laden...
D
DaFlattinger
myCSharp.de - Member
1
Themen
6
Beiträge
Letzte Aktivität
vor 2 Jahren
Dabei seit
10.08.2022
Erstellt vor 2 Jahren

Moin,

bei MVVM geht es nicht um die Code Schönheit. Bei kleinen Anwendungen macht das eigentlich weniger Sinn aber bei größeren wird man dir dankbar sein. Du schreibst generell dann nichts in die xaml.cs sondern alles in einem Viewmodel welchen du mit den DataContext setzt bzw definierst wo die aktionen eigentlich stattfinden. Dazu benötigst INotifyPropertyChanged. Mit ein bisschen Googlen kommt man hier schnell drauf was der Sinn dahinter ist.

LG

Erstellt vor 2 Jahren

Hallo,

für dieses Ereignis musst du zuerst entscheiden ob du direkt in der Xaml.cs den Code hineinschreibst. Ich selbst richte mich immer nach dem Umfang der App. Hat die App nur eine einzige Funktion so würde ich pers. kein MVVM verwenden.

Du kannst eine ComboBox (System.Windows.Controls) direkt im Programm erstellen und z.B in einem Grid einbinden. Sieht wie folgt aus (Code Behind):


methode() {
ComboBox box = new ComboBox();
grid.Chrildren.Add(box);
box.SetValue(Grid.RowProperty, 1);
box.SetValue(Grid.ColumnProperty, 1);
}

Wenn du das mit MVVM machen möchtest lese dich in die Thematik etwas hinein. Ist am ANfang vlt. etwas kompliziert, in summe ist es aber leicht aber etwas mehr schreibarbeit, am ende wirst du es bei großen Apps nicht bereuen!

LG

Erstellt vor 2 Jahren

Hallo,

was du mir gesendet hast hatte ich bereits versucht. Nur ich möchte ja nicht nur einen Node hinzufügen sondern ein Element in welchen die Nodes drinnen sind.
Ich schaffe es jedoch nicht das ich nodes in das Element reinpacke und dieses Element dann in die XML File reinschreibe...

LG

Erstellt vor 2 Jahren

Ich finde einige Antworten auf Google aber habe eigentlich schon so ziemlich alles durch...

Code habe ich nicht wirklich einen. Ich versuche es gerade wie folgt:


XmlDocument doc = new XmlDocument();
            doc.Load(path);
            XmlElement element = doc.CreateElement("ConfigParameter");
            XmlAttribute name = doc.CreateAttribute("Name", "Hallo");
            XmlAttribute type = doc.CreateAttribute("ConfigType", "string");
            XmlAttribute value = doc.CreateAttribute("Value", "Wert");

            element.SetAttributeNode(name);
            element.SetAttributeNode(type);
            element.SetAttributeNode(value);

Erstellt vor 2 Jahren

Hallo,

Ich habe nun schon einiges Versucht an Code und bin seit Tagen dran aber kriege es irgendwie nicht hin.


<ArrayOfConfigParameter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
	<ConfigParameter>
		<Name>Server</Name>
		<ConfigType>string</ConfigType>
		<Value xsi:type="xsd:string">10.8.123.12</Value>
	</ConfigParameter>
	<ConfigParameter>
		<Name>StationId</Name>
		<ConfigType>int</ConfigType>
		<Value xsi:type="xsd:string">100</Value>
	</ConfigParameter>
	<ConfigParameter>
		<Name>TimeFactor</Name>
		<ConfigType>float</ConfigType>
		<Value xsi:type="xsd:string">10.5</Value>
	</ConfigParameter>
	<ConfigParameter>
		<Name>Test</Name>
		<ConfigType>int</ConfigType>
		<Value xsi:type="xsd:string">10.5</Value>
	</ConfigParameter>
</ArrayOfConfigParameter>

Ich möchte diesen:


<ConfigParameter>
		<Name>Test</Name>
		<ConfigType>int</ConfigType>
		<Value xsi:type="xsd:string">10.5</Value>
	</ConfigParameter>

nochmal einfügen in das XML Dokument nur mit anderen Werten z.B beim Namen 'Moin' oder so...

Vielen Dank

Erstellt vor 2 Jahren

Moin,

Du verwendest hier nicht wirklich MVVM (Model View View Model). Dabei geht es darum das du relativ wenig in deine Klasse schreibst und die eigentliche Logik in anderen Klassen machst. Erstelle hierfür eine Klasse wie auch immer du diese nennen möchstest. In die Klasse wo du aktuell deine Events drinnen hast kannst du ein DataContext erstellen mit dem Verweis auf deinen ViewModel.

sprich:


DataContext = new ViewModel();

Nun kannst mit der Klasse ViewModel.cs Arbeiten.

Du gibst in der XAML Datei z.B. einen Button ein Binding:


<Button Command="{Binding Path=Cmd1}" x:Name="btn1" Content="1" HorizontalAlignment="Left" Margin="172,127,0,0" VerticalAlignment="Top" FontSize="16" Width="30" Height="30"/>

Es ist wichtig das ein Pfad eingegeben ist da du mit diesem dann Arbeitest.

Im ViewModel.cs wird die INotifyPropertyChanges vererbt.
Dannach kannst du ICommands erstellen bei denen du das die MEthode einfügst z.B:


private ICommand _mediumCommand;
public ICommand MediumCommand
        {
            get
            {
                if (_mediumCommand == null)
                    _mediumCommand = new RelayCommand(param => SelectMedium(), param => CanExecuteSelectMedium());
                return _mediumCommand;
            }
        }

Die Klasse RelayCommand.cs musst du dir selbst im Projekt erstellen, hierfür Google einfach.

Bei Fragen schreibe einfach!

LG