TextBox, не работает привязка в ToolTip

Рейтинг: 1Ответов: 1Опубликовано: 23.04.2023

Простейший код WPF, изучаю Binding:

 <TextBox x:Name="PathTextBox" TextWrapping="NoWrap" Text="D:\[Kawaiika-Raws] (2013) Shingeki no Kyojin S1 [BDRip 1920x1080 HEVC FLAC]\Bonus\Scans" Width="300" VerticalAlignment="Top" Margin="10,5,10,0" Height="20" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" IsReadOnly="true" Background="{x:Null}">
            <TextBox.ToolTip>
                <ToolTip>
                    <TextBlock Text="{Binding Text, ElementName=PathTextBox}" />
                </ToolTip>
            </TextBox.ToolTip>
        </TextBox>

В итоге при наведении мышки наTextBox я получаю такой результат, как на картинке.Не работает ToolTip

Почему не работает привязка? Эта строка {Binding Text, ElementName=PathTextBox}в контексте привязки к другим элементам управления вроде текста другого TextBox или Label работает прекрасно, а в ToolTip не хочет. Что я пропускаю?

Ответы

▲ 1Принят

ToolTip не является частью визуального дерева, поэтому привязка по ElementName или RelativeSource не сработает. Но если вам нужен просто текст, то можно проще.

<TextBox Text="..."
         ...
         ToolTip="{Binding Text, RelativeSource={RelativeSource Self}}" />

Ну либо через PlacementTarget

<TextBox Text="...">
    <TextBox.ToolTip>
        <ToolTip DataContext="{Binding PlacementTarget, RelativeSource={RelativeSource Self}}">
            <TextBlock Text="{Binding Text}" />
        </ToolTip>
    </TextBox.ToolTip>
</TextBox>

Кстати, тот же самый фокус вас ждет с ContextMenu и Popup.