OPC Studio User's Guide and Reference
Installed Examples - WPF - UAWpfScreen

Shows how to update WPF controls with dynamic OPC-UA data.

// ReSharper disable PossibleNullReferenceException

//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
// OPC client and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-CSharp .
// Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
// a commercial license in order to use Online Forums, and we reply to every post.

using System.Windows;
using System.Windows.Controls;
using OpcLabs.EasyOpc.UA;
using OpcLabs.EasyOpc.UA.OperationModel;

namespace UAWpfScreen
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow/* : Window*/
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void ClientOnDataChangeNotification(object sender, EasyUADataChangeNotificationEventArgs eventArgs)
        {
            // We have passed in a reference to the target TextBox as the State property in EasyUAMonitoredItemArguments.
            var textBox = (TextBox) eventArgs.Arguments.State;

            if (eventArgs.Succeeded)
                textBox.Text = eventArgs.AttributeData.DisplayValue();
            else
                textBox.Text = "*** Error: " + eventArgs.Exception;
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            // Define the target controls, the OPC data we want to monitor, and how fast.
            var arguments = new []
            {
                new EasyUAMonitoredItemArguments(TextBox1, "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer", "nsu=http://test.org/UA/Data/ ;i=10845", 1000),
                new EasyUAMonitoredItemArguments(TextBox2, "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer", "nsu=http://test.org/UA/Data/ ;i=10853", 1000),
                new EasyUAMonitoredItemArguments(TextBox3, "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer", "nsu=http://test.org/UA/Data/ ;i=10855", 1000)
                // or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported)
                // or "https://opcua.demo-this.com:51212/UA/SampleServer/"
            };

            // Hook the event handler, and subscribe to OPC data
            _client.DataChangeNotification += ClientOnDataChangeNotification;
            _handles = _client.SubscribeMultipleMonitoredItems(arguments);
        }

        private void Window_Unloaded(object sender, RoutedEventArgs e)
        {
            // Unsubscribe from OPC data, and unhook the event handler
            _client.UnsubscribeMultipleMonitoredItems(_handles);
            _client.DataChangeNotification -= ClientOnDataChangeNotification;
        }

        private readonly EasyUAClient _client = new EasyUAClient();

        private int[] _handles;
    }
}

 

See Also

Conceptual