На моей странице следующий сценарий и иерархия элементов XAML:
<Page> ....
<StackPanel> ...
<Grid> ....
<StackPanel>
<uc:MyUserControl
ReferencedButton={Binding ElementName=RightButton} />
<Button x:Name="RightButton" Click="{x:Bind ViewModel.OpenFlyout}" Content="Clickme" />
</StackPanel>
......
Тогда код от 'MyUserControl'
public UIElement ReferencedButton
{
get { return (UIElement)GetValue(ReferencedButtonProperty); }
set { SetValue(ReferencedButtonProperty, value); }
}
public static readonly DependencyProperty ReferencedButtonProperty =
DependencyProperty.Register(nameof(ReferencedButton), typeof(UIElement), typeof(MyUserControl), null);
Пока все хорошо, но я ожидал, что в моем коде свойство 'ReferencedButton' будет заполнено ссылкой на кнопку 'RightButton'. Однако он всегда возвращает ноль.
Я даже попробовал:
{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, ElementName=RightButton}
Я знаю, что можно связать элемент , потому что я получил пример от компонента DevExpress, но все еще безуспешно.
Я следую советам / правилам из следующих документов:
Связующее имя элемента
XAML Namescopes
p.s: Я знаю, что могу передать ссылку на кнопку в своем коде, однако я бы хотел сделать это через сам XAML.