When you set this property, the specified value must refer to an element in one of the following locations:

The current XAML namescope.

The XAML namescope of the templated parent if the binding target is in a data template or control template.

Because of this restriction, you cannot use the ElementName property to bind to elements that are not created by using XAML. To bind to elements created programmatically, use the Source property instead.

Source, RelativeSource, and ElementName are mutually exclusive in a binding. If you have set one of these attributes, then setting either of the other two in a binding (through XAML or through code) will cause an exception.