Se realizaron mejoras en la clase MainViewModel al agregar espacios en blanco para mejorar la legibilidad. En TagEditorAttribute, se añadieron nuevos atributos y se implementó la lógica para manejar nombres personalizados de propiedades. En UserControlFactory, se optimizó la obtención de nombres de propiedades y se eliminaron espacios en blanco innecesarios. Finalmente, se añadió un atributo Name en ucTransporteTTop para el coeficiente de fricción, mejorando la claridad en la interfaz de usuario.

This commit is contained in:
Miguel 2025-06-24 17:45:47 +02:00
parent 6928088691
commit 3bc314182c
4 changed files with 44 additions and 9 deletions

View File

@ -1337,6 +1337,8 @@ namespace CtrEditor
// Mostrar como modeless (no modal)
libraryWindow.Show();
}
}
public class SimulationData

View File

@ -105,6 +105,7 @@ namespace CtrEditor.ObjetosSim
[ObservableProperty]
[property: Category("Setup:")]
[property: Name("Coeficiente de Fricción")]
public float frictionCoefficient;
[ObservableProperty]
[property: Category("Setup:")]

View File

@ -1,3 +1,4 @@
using System;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
@ -12,9 +13,26 @@ namespace CtrEditor.ObjetosSim
/// <summary>
/// Atributo para marcar propiedades que deben usar el editor de etiquetas
/// </summary>
[AttributeUsage(AttributeTargets.Property)]
public class TagEditorAttribute : Attribute
{
public TagEditorAttribute() { }
public Type? EditorType { get; }
public TagEditorAttribute(Type? editorType = null)
{
EditorType = editorType;
}
}
[AttributeUsage(AttributeTargets.Property)]
public class NameAttribute : Attribute
{
public string DisplayName { get; }
public NameAttribute(string displayName)
{
DisplayName = displayName ?? throw new ArgumentNullException(nameof(displayName));
}
}
/// <summary>

View File

@ -190,12 +190,26 @@ namespace CtrEditor.ObjetosSim
continue;
var displayNameAttr = property.Attributes.OfType<DisplayNameAttribute>().FirstOrDefault();
var customNameAttr = property.Attributes.OfType<NameAttribute>().FirstOrDefault();
string displayName;
if (customNameAttr != null)
{
displayName = customNameAttr.DisplayName;
}
else if (displayNameAttr != null)
{
displayName = displayNameAttr.DisplayName;
}
else
{
displayName = property.Name.Replace("_", " ");
}
var propertyDefinition = new PropertyDefinition
{
TargetProperties = new[] { property.Name },
DisplayName = displayNameAttr != null
? displayNameAttr.DisplayName
: property.Name.Replace("_", " ")
DisplayName = displayName
};
// Aquí se añaden todas las propiedades; para "ImagePath" no se requiere