完成添加OPC变量

This commit is contained in:
2025-07-09 19:38:36 +08:00
parent 9352d6c073
commit 61636fa227
5 changed files with 144 additions and 42 deletions

View File

@@ -25,14 +25,26 @@
</Grid.ColumnDefinitions>
<!-- 连接设置 -->
<StackPanel Grid.Row="0" Grid.ColumnSpan="2" Orientation="Horizontal" Margin="0,0,0,10">
<TextBlock Text="Endpoint URL:" VerticalAlignment="Center" Margin="0,0,5,0" />
<TextBox Text="{Binding EndpointUrl, UpdateSourceTrigger=PropertyChanged}" Width="300" Margin="0,0,10,0" />
<Button Content="连接" Command="{Binding ConnectCommand}" />
<StackPanel Grid.Row="0"
Grid.ColumnSpan="2"
Orientation="Horizontal"
Margin="0,0,0,10">
<TextBlock Text="Endpoint URL:"
VerticalAlignment="Center"
Margin="0,0,5,0" />
<TextBox Text="{Binding EndpointUrl, UpdateSourceTrigger=PropertyChanged}"
Width="300"
Margin="0,0,10,0" />
<Button Content="连接"
Command="{Binding ConnectCommand}" />
</StackPanel>
<!-- 节点树 -->
<TreeView Grid.Row="1" Grid.Column="0" ItemsSource="{Binding OpcUaNodes}" Margin="0,0,10,0" SelectedItemChanged="TreeView_SelectedItemChanged">
<TreeView Grid.Row="1"
Grid.Column="0"
ItemsSource="{Binding OpcUaNodes}"
Margin="0,0,10,0"
SelectedItemChanged="TreeView_SelectedItemChanged">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding DisplayName}" />
@@ -41,24 +53,33 @@
</TreeView>
<!-- 变量列表 -->
<DataGrid Grid.Row="1" Grid.Column="1" ItemsSource="{Binding SelectedNodeVariables}" AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid Grid.Row="1"
Grid.Column="1"
ItemsSource="{Binding SelectedNodeVariables}"
SelectionChanged="Selector_OnSelectionChanged"
AutoGenerateColumns="False"
IsReadOnly="True">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding DataContext.SelectAllVariables, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
<CheckBox
IsChecked="{Binding DataContext.SelectAllVariables, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected, UpdateSourceTrigger=PropertyChanged}" />
<CheckBox IsChecked="{Binding IsSelect, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="名称" Binding="{Binding DisplayName}" />
<DataGridTextColumn Header="节点ID" Binding="{Binding NodeId}" />
<DataGridTextColumn Header="数据类型" Binding="{Binding DataType}" />
<DataGridTextColumn Header="名称"
Binding="{Binding Name}" />
<DataGridTextColumn Header="节点ID"
Binding="{Binding OpcUaNodeId}" />
<DataGridTextColumn Header="数据类型"
Binding="{Binding DataType}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</controls:ContentDialog>
</controls:ContentDialog>

View File

@@ -1,4 +1,5 @@
using System.Windows;
using System.Windows.Controls;
using CommunityToolkit.Mvvm.Messaging;
using iNKORE.UI.WPF.Modern.Controls;
using PMSWPF.Models;
@@ -41,4 +42,17 @@ public partial class OpcUaImportDialog : ContentDialog
await ViewModel.LoadNodeVariables(selectedNode);
}
}
private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs args)
{
if (args.AddedItems!=null && args.AddedItems.Count>0)
{
foreach (var item in args.AddedItems)
{
ViewModel.SelectedVariables.Add((VariableData)item);
}
}
}
}