2010-04-12 5 views
0

J'ai écrit une propriété jointe qui stocke entre autres un texte d'aide. Ce texte d'aide est affiché sur le côté droit de la fenêtre principale. Cela fonctionne bien.Lier à une propriété jointe

Maintenant, je veux ajouter une info-bulle pour chaque contrôle. Le contenu de l'info-bulle doit être le même que pour l'extension du texte d'aide.

Le code 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> 

Et maintenant, le code du style:

<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> 

Si je lance le programme que je reçois l'erreur de liaison:

System.Windows.Data Error: 39 : BindingExpression path error: 'Helper:HelpExtension' property not found on 'object' ''ListView' (Name='ListViewSources')'. BindingExpression:Path=Helper:HelpExtension.HelpText; DataItem='ListView' (Name='ListViewSources'); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')

Quelqu'un savoir comment je peux lier le TextBlock au contenu de Helper: HelpExternsion.HelpText?

+0

Le code du style est manquant. Veuillez l'ajouter en éditant votre message. – gehho

+0

Je suppose que vous voulez dire la propriété jointe, pas l'extension de balisage ... –

Répondre

0

Il suffit de mettre entre parenthèses autour du nom de propriété attachée:

<TextBlock Text="{Binding Path=(Helper:HelpExtension.HelpText), RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListView}}}" /> 
0

Voulez-vous dire se liant à la propriété attachée? Dans ce cas, vous avez besoin entre parenthèses supplémentaires:

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

Voir, par exemple, here.

Questions connexes