Привязать к прикрепленной собственности - PullRequest
0 голосов
/ 12 апреля 2010

Я написал прикрепленное свойство, которое хранит среди прочего текст справки. Этот текст справки отображается в правой части главного окна. Это отлично работает.

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

Код XAML:

<ListView   ctrl:ListViewLayoutManager.Enabled="true"
            x:Name="ListViewSources"
            ItemsSource="{Binding SourceItems}" 
            ItemContainerStyle="{DynamicResource ListViewItemStyleAlternate}"
            Height="150"
            MinWidth="350" 
            Helper:HelpExtension.IsControl="true"
            Helper:HelpExtension.HelpText="{x:Static strings:GUIResource.HelpProfilesSourcesDescriptionText}" >
    <ListView.ToolTip>
        <ToolTip Style="{DynamicResource Own_TooltipStyle}"></ToolTip>
    </ListView.ToolTip>

А теперь код стиля:

<Style x:Key="Own_TooltipStyle" TargetType="{x:Type ToolTip}">
    <Setter Property="Background" Value="LightYellow"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ToolTip}">
                <Grid>
                    <TextBlock Text="{Binding Path=Helper:HelpExtension.HelpText, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListView}}}" />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Если я запускаю программу, я получаю ошибку привязки:

System.Windows.Data Ошибка: 39: Ошибка пути BindingExpression: Свойство 'Helper: HelpExtension' отсутствует найдено в 'объекте' '' ListView ' (Name = 'ListViewSources')». BindingExpression: Path = Helper: HelpExtension.HelpText; DataItem = 'ListView' (Name = 'ListViewSources'); цель Элемент 'TextBlock' (Name = ''); целевое свойство 'Текст' (тип 'Строка')

Кто-нибудь знает, как я могу связать TextBlock с содержимым Helper: HelpExternsion.HelpText?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2010

Вы имеете в виду привязку к прикрепленной собственности? В этом случае вам нужны дополнительные скобки:

{Binding Path=(Helper:HelpExtension.HelpText), ...

См., Например, здесь .

0 голосов
/ 12 апреля 2010

Просто поставьте скобки вокруг имени присоединенного свойства:

<TextBlock Text="{Binding Path=(Helper:HelpExtension.HelpText), RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListView}}}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...