Believe it or not, just add Path=
and use parenthesis when binding to an attached property:
IsChecked="{Binding Path=(local:Attached.Test), Mode=TwoWay, RelativeSource={RelativeSource Self}}"
In addition, your call to RegisterAttached
should pass in “Test” as the property name, not “TestProperty”.