CtrEditor/MainViewModel.cs

98 lines
2.9 KiB
C#
Raw Normal View History

2024-05-02 11:06:45 -03:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Input;
using Ookii.Dialogs.Wpf;
using System.Windows.Input;
namespace CtrEditor
{
public class MainViewModel : INotifyPropertyChanged
{
private double _zoomFactor = 1.0;
public MainViewModel()
{
OpenWorkDirectoryCommand = new RelayCommand(OpenWorkDirectory);
LoadImageCommand = new RelayCommand(LoadImage);
}
public string DirectorioTrabajo
{
2024-05-02 11:26:45 -03:00
get => EstadoPersistente.Instance.DirectorioTrabajo;
2024-05-02 11:06:45 -03:00
set
{
2024-05-02 11:26:45 -03:00
if (value != null)
{
OnPropertyChanged(nameof(DirectorioTrabajo)); // Notificar el cambio de propiedad
EstadoPersistente.Instance.DirectorioTrabajo = value; // Actualizar el estado persistente
EstadoPersistente.Instance.GuardarEstado(); // Guardar el estado actualizado
}
2024-05-02 11:06:45 -03:00
}
}
public ICommand OpenWorkDirectoryCommand { get; }
private void OpenWorkDirectory()
{
var dialog = new VistaFolderBrowserDialog();
if (dialog.ShowDialog() == true) // Mostrar el diálogo y comprobar si el resultado es positivo
{
DirectorioTrabajo = dialog.SelectedPath; // Actualizar la propiedad que también actualiza el estado persistente
}
}
// Ejemplo de propiedad para gestionar el UserControl activo
private UserControl _activeControl;
public UserControl ActiveControl
{
get => _activeControl;
set { _activeControl = value; OnPropertyChanged(); }
}
// Comando para cargar una imagen
public ICommand LoadImageCommand { get; private set; }
private void LoadImage()
{
// Implementar lógica de carga de imagen
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public double ZoomFactor
{
get => _zoomFactor;
set { _zoomFactor = value; OnPropertyChanged(); }
}
private double _offsetX = 0;
private double _offsetY = 0;
public double OffsetX
{
get => _offsetX;
set { _offsetX = value; OnPropertyChanged(); }
}
public double OffsetY
{
get => _offsetY;
set { _offsetY = value; OnPropertyChanged(); }
}
// Implementación de INotifyPropertyChanged...
}
}