В моем xaml я объявляю пользовательский объект, у которого есть свойство, ссылающееся на другой пользовательский объект:
public class CustomObjectA : FrameworkElement
{
public CustomObjectB InnerObj
{
get { return GetValue(InnerObjProperty); }
set { SetValue(InnerObjProperty, value); }
}
public static readonly DependencyProperty InnerObjProperty =
DependencyProperty.Register("InnerObj",
typeof(CustomObjectB),
typeof(CustomObjectA),
new PropertyMetadata(null));
}
public class CustomObjectB : FrameworkElement
{
public string Data
{
get { return GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}
public static readonly DependencyProperty DataProperty =
DependencyProperty.Register("Data",
typeof(string),
typeof(CustomObjectB),
new PropertyMetadata(null));
}
Теперь, когда я объявляю эти объекты в моем xaml таким образом, привязка не работает:
<my:CustomObjectA>
<my:CustomObjectA.InnerObj>
<my:CustomObjectB Data="{Binding someValue}" />
</my:CustomObjectA.InnerObj>
</my:CustomObjectA>
Однако, когда я объявляю эти объекты в моем xaml следующим образом, привязка работает:
<my:CustomObjectB x:Name="testObj" Data="{Binding someValue}" />
<my:CustomObjectA InnerObj="{Binding ElementName=testObj}" />
Я предполагаю, что это потому, что система, отображающая привязки, не выглядит выше верхнего уровняобъект.Мой вопросЕсть ли способ указать системе оценивать выражения привязки за пределами пользовательского объекта верхнего уровня, чтобы xaml-подобный вариант 1 работал?