Привязка к свойству UserControl внутри всплывающей подсказки не работает - PullRequest
0 голосов
/ 24 июня 2010

Я пытаюсь сделать простую привязку к свойству внутри моего usercontrol.Кто-нибудь знает, почему это не работает?Он работает, когда TextBlock находится вне подсказки.

Спасибо!

MasterPage.cs:

MyUserControlInstance.DisplayName = "Test";

MyUserControl.xaml

<ToolTipService.ToolTip>
    <ToolTip Template="{StaticResource ToolTipTemplate}">
        <StackPanel>
            <TextBlock Text="{Binding ElementName=UserControl, Path=DisplayName}" />
        </StackPanel>
    </ToolTip>
</ToolTipService.ToolTip>

MyUserControl.cs

public static DependencyProperty DisplayNameProperty = DependencyProperty.Register("DisplayName", typeof(string), typeof(MyUserControl));
public string DisplayName
{
    get { return (string)GetValue(DisplayNameProperty); }
    set { SetValue(DisplayNameProperty, value); }
}

Ответы [ 3 ]

4 голосов
/ 24 июня 2010

Всплывающая подсказка имеет свойство PlacementTarget, которое определяет элемент пользовательского интерфейса, который имеет подсказку

<TextBlock.ToolTip> 
    <ToolTip  
         DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}"  
        <TextBlock Text="{Binding Text}">  <!-- tooltip content --> 
     </ToolTip> 
</TextBlock.ToolTip> 
1 голос
/ 24 июня 2010

Привязка элемента к элементу не работает для всплывающих подсказок, поскольку подсказка имеет свое собственное дерево элементов. Здесь это один из способов сделать это

1 голос
/ 24 июня 2010

Всплывающая подсказка считается самостоятельным элементом управления и поэтому не может видеть своего прямого родителя.Связывание внутри него не может получить доступ к элементу UserControl, поскольку он ничего не знает об этом.См. здесь для нескольких решений этой проблемы.

...