using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Media;
using ZB.MOM.WW.OtOpcUa.Client.UI.ViewModels;
namespace ZB.MOM.WW.OtOpcUa.Client.UI.Views;
public partial class WriteValueWindow : Window
{
private readonly SubscriptionsViewModel _subscriptionsVm;
private readonly string _nodeId;
/// Initializes a default instance of the WriteValueWindow for XAML designer support.
public WriteValueWindow()
{
InitializeComponent();
_subscriptionsVm = null!;
_nodeId = string.Empty;
}
/// Initializes a WriteValueWindow with the node to write and its current value.
/// The subscriptions view model for write operations.
/// The OPC UA node ID to write to.
/// The current value of the node, or null if unknown.
public WriteValueWindow(SubscriptionsViewModel subscriptionsVm, string nodeId, string? currentValue)
{
InitializeComponent();
_subscriptionsVm = subscriptionsVm;
_nodeId = nodeId;
var nodeIdText = this.FindControl("NodeIdText");
if (nodeIdText != null) nodeIdText.Text = nodeId;
var currentValueText = this.FindControl("CurrentValueText");
if (currentValueText != null) currentValueText.Text = currentValue ?? "(null)";
// Pre-fill the write input with the current value
var writeInput = this.FindControl("WriteValueInput");
if (writeInput != null) writeInput.Text = currentValue ?? "";
var writeButton = this.FindControl