Linter/formatter pass across the full codebase. Restores required partial keyword on AXAML code-behind classes that the formatter incorrectly removed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
46 lines
1.6 KiB
C#
46 lines
1.6 KiB
C#
using System.ComponentModel;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using ZB.MOM.WW.LmxOpcUa.Client.UI.ViewModels;
|
|
|
|
namespace ZB.MOM.WW.LmxOpcUa.Client.UI.Views;
|
|
|
|
public partial class MainWindow : Window
|
|
{
|
|
public MainWindow()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
protected override void OnLoaded(RoutedEventArgs e)
|
|
{
|
|
base.OnLoaded(e);
|
|
|
|
var browseTreeView = this.FindControl<BrowseTreeView>("BrowseTreePanel");
|
|
var treeView = browseTreeView?.FindControl<TreeView>("BrowseTree");
|
|
if (treeView != null) treeView.SelectionChanged += OnTreeSelectionChanged;
|
|
|
|
// Wire up context menu opening to sync selection and check history
|
|
var contextMenu = this.FindControl<ContextMenu>("TreeContextMenu");
|
|
if (contextMenu != null) contextMenu.Opening += OnTreeContextMenuOpening;
|
|
}
|
|
|
|
private void OnTreeSelectionChanged(object? sender, SelectionChangedEventArgs e)
|
|
{
|
|
if (DataContext is not MainWindowViewModel vm || sender is not TreeView treeView) return;
|
|
|
|
// Update single selection for read/write and history panels
|
|
vm.SelectedTreeNode = treeView.SelectedItem as TreeNodeViewModel;
|
|
|
|
// Sync multi-selection collection
|
|
vm.SelectedTreeNodes.Clear();
|
|
foreach (var item in treeView.SelectedItems)
|
|
if (item is TreeNodeViewModel node)
|
|
vm.SelectedTreeNodes.Add(node);
|
|
}
|
|
|
|
private void OnTreeContextMenuOpening(object? sender, CancelEventArgs e)
|
|
{
|
|
if (DataContext is MainWindowViewModel vm) vm.UpdateHistoryEnabledForSelection();
|
|
}
|
|
} |