Это тот, который я хочу достичь < /p>
Я пытаюсь создать кнопку в Авалонии, на которой при щелчке отобразится таблицы разных имен параметров и их числа и при нажатии на них Это отобразит выбранное имя/номер. Я на самом деле закончил кодировать его, но я не мог достичь того, что хотел точно. Любая помощь или идеи, спасибо .. < /p>
Код для имен таблиц и их числа (параметр и их числа): < / p > < b r / > < c o d e > u s i n g M S F _ D r i v e _ M a n a g e r . V i e w M o d e l s . N e u e r _ U m r i c h t e r ; < b r / > u s i n g M S F _ D r i v e _ M a n a g e r . V i e w M o d e l s . O p t i o n e n ; < b r / > u s i n g M S F _ D r i v e _ M a n a g e r . V i e w s ; < b r / > u s i n g S y s t e m ; < b r / > u s i n g S y s t e m . C o l l e c t i o n s . G e n e r i c ; < b r / > u s i n g S y s t e m.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MSF_Drive_Manager.Globals
{
public static class GLobalVariables
{
public enum Umrichter_Varianten
{
Neuer_Umrichter,
Voestalpine_Unistar
}
public enum Adressen_Parameter_Neuer_Umrichter
{
P1_Hochlauframpe_Rechts = 0x80,
P1_Tieflauframpe_Rechts = 0x81,
P1_Hochlauframpe_Links = 0x82,
P1_Tieflauframpe_Links = 0x83,
P1_Schnellhalterampe = 0x84,
P1_F_Max_Rechts = 0x85,
P1_F_Min_Rechts = 0x86,
P1_F_Min_Links = 0x87,
P1_F_Max_Links = 0x88,
P1_MultiFrequenz = 0x89,
P1_MotorNennfrequenz = 0x8A,
P1_Statischer_Boost = 0x8B,
P1_Dynamischer_Boost = 0x8C,
P1_Gleichstrom_Bremse = 0x8D,
P1_Zeit_dynamischer_Boost = 0x8E,
P1_Zeit_gleichstrom_Bremse = 0x8F,
P1_Motorscheinstromgrenze = 0x90,
P1_S_Kurve_Rampentyp = 0x91,
P1_Motornennstrom_in_A = 0x92,
P1_Motornennspannung_in_V = 0x93,
P1_Drehzahlregler_aktivieren = 0x94,
P1_Drehzahlvorgabe_FIX = 0x95,
P1_Maximal_zulässige_Drehzahl_in_rpm = 0x96,
P1_Minimal_zulässige_Drehzahl_in_rpm = 0x97,
P1_Lage_Sollwert_FIX = 0x98,
P1_Lageregler_aktivieren = 0x99,
P1_Maximal_zulässiges_Motorwellendrehmoment_in_Nm = 0x9A,
P1_Minimal_zulässiges_Motorwellendrehmoment_in_Nm = 0x9B,
P2_Hochlauframpe_Rechts = 0x100,
P2_Tieflauframpe_Rechts = 0x101,
P2_Hochlauframpe_Links = 0x102,
P2_Tieflauframpe_Links = 0x103,
P2_Schnellhalterampe = 0x104,
P2_F_Max_Rechts = 0x105,
P2_F_Min_Rechts = 0x106,
P2_F_Min_Links = 0x107,
P2_F_Max_Links = 0x108,
P2_MultiFrequenz = 0x109,
P2_MotorNennfrequenz = 0x10A,
P2_Statischer_Boost = 0x10B,
P2_Dynamischer_Boost = 0x10C,
P2_Gleichstrom_Bremse = 0x10D,
P2_Zeit_dynamischer_Boost = 0x10E,
P2_Zeit_gleichstrom_Bremse = 0x10F,
P2_Motorscheinstromgrenze = 0x110,
P2_S_Kurve_Rampentyp = 0x111,
P2_Motornennstrom_in_A = 0x112,
P2_Motornennspannung_in_V = 0x113,
P2_Drehzahlregler_aktivieren = 0x114,
P2_Drehzahlvorgabe_FIX = 0x1151,
P2_Maximal_zulässige_Drehzahl_in_rpm = 0x116,
P2_Minimal_zulässige_Drehzahl_in_rpm = 0x117,
P2_Lage_Sollwert_FIX = 0x118,
P2_Lageregler_aktivieren = 0x119,
P2_Maximal_zulässiges_Motorwellendrehmoment_in_Nm = 0x11A,
P2_Minimal_zulässiges_Motorwellendrehmoment_in_Nm = 0x11B,
}
public static bool Interface_found = false;
public static MySerialPort iSerialPort = new MySerialPort();
public static AutoConnectTask? task_autoconnect = null;
public static ConnectionTask? task_connection = null;
public static ReConnectionTask? task_reconnection = null;
public static OverviewTask? task_overview = null;
public static Mutex? mutex = null;
public static bool try_toConnect = false;
public static bool manualselection = false;
public static waitTask? task_wait = null;
public static short Version_number_ID = 0;
public static short Software_Version_number = 0;
public static short Software_Version_number_special = 0;
public static string device_typ = "";
public static string baudrate_statusbar = "";
public static string comport_statusbar = "";
public static string actual_baudrate = "";
public static short selected_variant = 0;
public static bool overview_enabled = false;
public static bool application_parameter_enabled = false;
public static bool calibration_parameter_enabled = false;
public static Overview_voestalpine? overview_voestalpine;
public static Application_parameter? application_parameter;
public static Calibration_voestalpine? calibration_voestalpine;
public static MainViewModel? mainViewModelInstance; // Mainview Instanz
public static OptionsViewModel? optionsViewModelInstance;
public static Parameter_Table? parameterTableInstance; // Splashview Instanz
}
}
markup для servicewindow.axaml (UI):
Test
Das Beschreiben einer freien Adresse darf nur von geschultem
Fachpersonal durchgeführt werden.
Unsachgemäße Bediengung kann Schaden am Umrichter und/oder
an den angeschlossenen Geräten verursachen!!!.
Вот код для parameter_table.cs (таблица отображения или управление событиями):
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ReactiveUI;
using Windows.Media.Capture.Frames;
using System.Windows.Input;
using static MSF_Drive_Manager.Globals.GLobalVariables;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit;
namespace MSF_Drive_Manager.ViewModels.Neuer_Umrichter
{
public class Parameter_Table : ObservableObject
{
public Action? CloseAction { get; set; }
public ObservableCollection neuer_Umrichters { get; set; }
private Neuer_Umrichter _selectedMotor;
public Neuer_Umrichter SelectedMotor
{
get => _selectedMotor;
set => SetProperty(ref _selectedMotor, value);
}
public string Neuer_UmrichterText => SelectedMotor != null ? $"{SelectedMotor.MotorName} = {SelectedMotor.MotorNumber}" : string.Empty;
public ICommand ShowMotorListCommand { get; }
public Parameter_Table()
{
_selectedMotor = new Neuer_Umrichter("DefaultMotor", "0");
neuer_Umrichters = new ObservableCollection(Enum.GetValues(typeof(Adressen_Parameter_Neuer_Umrichter)).Cast().Select(e => new Neuer_Umrichter(e.ToString(), ((int)e).ToString("X")))
);
ShowMotorListCommand = new RelayCommand(ShowMotorList);
}
private void ShowMotorList()
{
neuer_Umrichters.Clear();
foreach (Adressen_Parameter_Neuer_Umrichter address in Enum.GetValues(typeof(Adressen_Parameter_Neuer_Umrichter)))
{
neuer_Umrichters.Add(new Neuer_Umricther(address.ToString(), ((int)address).ToString("X")));
}
}
}
}
markup для mainumrichter.axaml (для хранения значений таблицы):
Подробнее здесь: https://stackoverflow.com/questions/794 ... g-properly