| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- using System;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Media;
- using VMControls.Interface; // IVmModule
- using VMControls.RenderInterface; // IImageData
- namespace Plugins.Vm.Views
- {
- /// <summary>VM 画面框的显示结果类型(OK/NG/无)。</summary>
- public enum VmResultType { Null, OK, NG }
- /// <summary>
- /// 单个画面框(镜像 VppWindow 的角色):标题、状态圆点、图像区。
- /// </summary>
- public partial class VmWindow : UserControl
- {
- public VmWindow()
- {
- InitializeComponent();
- }
- public void SetCaption(string caption)
- {
- if (!Dispatcher.CheckAccess()) { Dispatcher.Invoke(() => SetCaption(caption)); return; }
- CaptionText.Text = caption ?? "";
- }
- public void SetStatusDotVisible(bool visible)
- {
- if (!Dispatcher.CheckAccess()) { Dispatcher.Invoke(() => SetStatusDotVisible(visible)); return; }
- StatusDot.Visibility = visible ? Visibility.Visible : Visibility.Collapsed;
- }
- public void SetLable(VmResultType type)
- {
- if (!Dispatcher.CheckAccess()) { Dispatcher.Invoke(() => SetLable(type)); return; }
- StatusDot.Visibility = Visibility.Visible;
- switch (type)
- {
- case VmResultType.OK: StatusDot.Fill = new SolidColorBrush(Color.FromRgb(0x4C, 0xAF, 0x50)); break;
- case VmResultType.NG: StatusDot.Fill = new SolidColorBrush(Color.FromRgb(0xF4, 0x43, 0x36)); break;
- default: StatusDot.Fill = new SolidColorBrush(Color.FromRgb(0x88, 0x88, 0x88)); break;
- }
- }
- /// <summary>
- /// 刷新图像:用 VM 渲染控件显示。支持传入 VM 模块(IVmModule)或图像数据(IImageData);
- /// TODO:如需显示 TeamAAS 的 GenImage,在此将其转为 VM 的 IImageData。
- /// </summary>
- public void RefreshImage(object value)
- {
- if (!Dispatcher.CheckAccess()) { Dispatcher.Invoke(() => RefreshImage(value)); return; }
- try
- {
- if (value is IVmModule module)
- Render.ModuleSource = module;
- else if (value is IImageData img)
- Render.ImageSource = img;
- Render.UpdateVMResultShow();
- }
- catch { /* 渲染失败不影响流程 */ }
- }
- /// <summary>清空画面显示。</summary>
- public void ClearImage()
- {
- if (!Dispatcher.CheckAccess()) { Dispatcher.Invoke(new Action(ClearImage)); return; }
- try { Render.ClearDisplayView(); } catch { }
- }
- }
- }
|