UsrPrintTemplateleft.xaml.cs 5.9 KB
using Asa.FaceControl;
using BLL;
using Model;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Forms;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace SmartScan.SetControl.WPF
{
    /// <summary>
    /// UsrPrintTemplateleft.xaml 的交互逻辑
    /// </summary>
    public partial class UsrPrintTemplateleft : System.Windows.Controls.UserControl
    {// 在UsrPrintTemplateleft类中
     // 定义事件参数类
        public class LabelSelectionEventArgs : EventArgs
        {
            public int SelectedIndex { get; set; }
            public string SelectedItem { get; set; }
        }
        // 定义事件来与WinForms通信
        public event EventHandler<LabelSelectionEventArgs> LabelSelectionChanged;

        // 按钮点击事件
        public event EventHandler AddLabelRequested;
        public event EventHandler DeleteLabelRequested;
        public event EventHandler CopyLabelRequested;
        public event EventHandler RenameLabelRequested;

        public UsrPrintTemplateleft()
        {
            InitializeComponent();
            if (LstLabel.SelectedIndex >= 0)
            {
                LabelSelectionChanged?.Invoke(this, new LabelSelectionEventArgs
                {
                    SelectedIndex = 0,
                    SelectedItem = LstLabel.SelectedItem.ToString()
                });
            }
        }
        // 清空标签列表
        public void ClearLabelList()
        {
            LstLabel.Items.Clear();
        }
        private void LstLabel_SelectedIndexChanged(object sender, SelectionChangedEventArgs e)
        {
            if (LstLabel.SelectedIndex == -1) return;
            if (LstLabel.SelectedIndex >= 0)
            {
                LabelSelectionChanged?.Invoke(this, new LabelSelectionEventArgs
                {
                    SelectedIndex = LstLabel.SelectedIndex,
                    SelectedItem = LstLabel.SelectedItem.ToString()
                });
            }
            // 重置选中状态
            LstLabel.SelectedIndex = -1;
        }

        private readonly SizeF LABEL_ADD_DEFAULT = new(50, 60);
        private void BtnAddLabel_Click(object sender, RoutedEventArgs e)
        {
            //string text = LanguageWwitchover.Dialog(LanguageDialogKey.PRINT_TEMPLATE_ADD);
            //FaceInputBox input = new(BtnAddLabel.Text, text);
            //DialogResult dr = input.ShowDialog();
            //if (dr != DialogResult.OK) return;
            //if (string.IsNullOrWhiteSpace(input.InputValue)) return;
            ////检查是否有已存在的名称
            //var find = LstLabel.Items.Cast<string>().FirstOrDefault(name => name.Equals(input.InputValue));

            //if (find != null)
            //{
            //    string hint = Asa.FaceControl.Language.Dialog("KeyExists");
            //    hint = hint.Replace("[name]", input.InputValue);
            //    new Asa.FaceControl.FaceMessageBox("", hint, MessageBoxButtons.OK).ShowDialog();
            //    return;
            //}
            //var newTemplate = new PrintLabelTemplate
            //{
            //    Name = input.InputValue,
            //    Size = LABEL_ADD_DEFAULT
            //};
            //newTemplate.State = TemplateState.Unsaved;

            //// 添加到集合
            //LstLabel.Items.Add(input.InputValue);

            //// 选中最后一项
            //LstLabel.SelectedIndex = LstLabel.Items.Count - 1;
            // 触发事件通知WinForms处理添加标签
            AddLabelRequested?.Invoke(this, e);
        }

        private void BtnDelLabel_Click(object sender, RoutedEventArgs e)
        {
            // 触发事件通知WinForms处理删除标签
            DeleteLabelRequested?.Invoke(this, e);
        }

        private void BtnCopyLabel_Click(object sender, RoutedEventArgs e)
        {
            // 触发事件通知WinForms处理复制标签
            CopyLabelRequested?.Invoke(this, e);
        }

        private void BtnRenameLabel_Click(object sender, RoutedEventArgs e)
        {
            // 触发事件通知WinForms处理重命名标签
            RenameLabelRequested?.Invoke(this, e);
        }
        // 提供API来操作列表
        public void AddLabelToList(string labelName)
        {
            LstLabel.Items.Add(labelName);
            LstLabel.SelectedIndex = LstLabel.Items.Count - 1;
        }
        public void RemoveLabelFromList(int index)
        {
            if (index >= 0 && index < LstLabel.Items.Count)
            {
                LstLabel.Items.RemoveAt(index);
                if (LstLabel.Items.Count > 0)
                {
                    LstLabel.SelectedIndex = 0;
                }
            }
        }

        public void RenameLabelInList(int index, string newName)
        {
            if (index >= 0 && index < LstLabel.Items.Count)
            {
                LstLabel.Items[index] = newName;
            }
        }

        public void ClearList()
        {
            LstLabel.Items.Clear();
        }

        public void PopulateList(string[] labelNames)
        {
            LstLabel.Items.Clear();
            foreach (var name in labelNames)
            {
                LstLabel.Items.Add(name);
            }
        }

        public string GetSelectedLabelName()
        {
            return LstLabel.SelectedItem as string;
        }

        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        { 
            LanguageWwitchover.LoadPath(FilePath.LANGUAGE_DIR);
            LanguageWwitchover.LoadLanguage(BLLCommon.config.Language);
            LanguageWwitchover.SetLanguage(this);
        }
    }
}