Я пытаюсь создать многоразовый всплывающий пользовательский элемент управления.Это должен быть пользовательский контроль, потому что он должен содержать кнопку и гиперссылку, которая будет нуждаться в коде позади при нажатии.Я хочу установить PlacementTarget всплывающего окна на элемент управления (например, кнопку) в родительском окне и хотел бы иметь возможность передать имя элемента управления, чтобы всплывающее окно открывалось рядом с соответствующим элементом управления.Я пробовал следующее, но оно не работает.
Контроль пользователя:
<UserControl
x:Class="SampleTestProject.WPF.VrtContactUserTooltip"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="parent">
<Grid>
<Popup
Name="ContactTooltip"
PlacementTarget="{Binding Path=Target, ElementName=parent}"
DataContext="{Binding Path=Contact}"/>
</Grid>
</UserControl>
Код для управления пользователем:
public partial class VrtContactUserTooltip : UserControl
{
public VrtContactUserTooltip()
{
InitializeComponent();
}
#region Properties
#region Target
/// <summary>
/// Gets or sets the Target of the tooltip
/// </summary>
public string Target
{
get { return (string)GetValue(TargetProperty); }
set { SetValue(TargetProperty, value); }
}
/// <summary>
/// Identified the Target dependency property
/// </summary>
public static readonly DependencyProperty TargetProperty =
DependencyProperty.Register("Target", typeof(string),
typeof(VrtContactUserTooltip), new PropertyMetadata(""));
#endregion
#region Contact
/// <summary>
/// Gets or sets the Contact of the tooltip
/// </summary>
public Contact Contact
{
get { return (Contact)GetValue(ContactProperty); }
set { SetValue(ContactProperty, value); }
}
/// <summary>
/// Identified the Contact dependency property
/// </summary>
public static readonly DependencyProperty ContactProperty =
DependencyProperty.Register("Contact", typeof(Contact),
typeof(VrtContactUserTooltip), new PropertyMetadata(null));
#endregion
#endregion
}
}
Где находится контроль пользователяused:
<Button
x:Name="PopupButton3" />
<wpf:VrtContactUserTooltip
Target="{Binding Source={x:Reference PopupButton3}}"
Contact="{Binding Path=Contact}"/>
Возможно ли это сделать (т.е. передать имя элемента управления из родительского элемента управления в пользовательский элемент управления и связать его с ним)?