This is a complete self contained example. Just copy and paste into a function. It was tested in 14 (comment out setting OnElementChanged in 14)/15/16 with the same result.
test;win;binding;⎕USING;str;xml;xaml
⎕USING←'System.IO'
⎕USING,←⊂'System.Windows.Markup'
⎕USING,←⊂'System.Xml,system.xml.dll'
⎕USING,←⊂'System.Windows.Controls,WPF/PresentationFramework.dll'
xaml←'<Window '
xaml,←' xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"'
xaml,←' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" '
xaml,←' xmlns:d="http://schemas.microsoft.com/expression/blend/2008" '
xaml,←' xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"'
xaml,←' xmlns:local="clr-namespace:testlibrary" '
xaml,←' mc:Ignorable="d" '
xaml,←' Title="Window2" Height="300" Width="300"> '
xaml,←' <Grid > '
xaml,←' <StackPanel DataContext="{Binding MyValues}"> '
xaml,←' <TextBox Text="{Binding TextValue, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"></TextBox> '
xaml,←' <CheckBox Content="test" IsChecked="{Binding CheckBoxValue, Mode=TwoWay}"></CheckBox> '
xaml,←' </StackPanel> '
xaml,←' </Grid> '
xaml,←'</Window>'
str←⎕NEW StringReader(⊂xaml)
xml←⎕NEW XmlTextReader str
win←XamlReader.Load xml
props←⎕NS''
props.MyValues←⎕NS''
props.MyValues.TextValue←'test'
props.MyValues.CheckBoxValue←1
⎕←'Checkbox value should be ticked.'
⎕THIS.⎕FX'ElemChanged (ob ev)' '⎕←ev.Name , '' Value: '', ⍕ob.MyValues ⍎ev.Name '
binding←2015⌶'props'
binding.onElementChanged←(⍕⎕THIS),'.ElemChanged'
win.DataContext←binding
win.Topmost←1
win.Show