В таких ситуациях я использую
ElementName=userControl
вместо
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Views:MyUserControlClass}}
Также вы можете использовать
{Binding Parent.DataContext.AllRowsSelected, ElementName=LayoutRoot}
В этом случае я предполагаю, что LayoutRoot - это имя элемента, родительским элементом которого является пользовательский элемент управления.Parent
является его собственностью.Таким образом, привязка устанавливается к свойству DataContext родителя.
Я предпочитаю последний вариант, потому что предоставление имени для пользовательского элемента управления ограничивает его использование.
EDIT
О LayoutRoot .Это имя часто предоставляется для верхнего элемента в Window или UserControl, или просто для некоторого макета:
<Window ...>
<Grid Name="LayoutRoot">
...
</Grid>
</Window>
В этом имени нет ничего особенного.Просто часто используется.Та же ситуация, что и для псевдонимов пространства имен в xaml: sys (указывает на mscorlib), локально (указывает на пространство имен вашего приложения) и т. Д.