绑定附属物

时间:2010-04-12 14:29:55

标签: c# wpf data-binding xaml

我写了一个附属物,其中包含一个帮助文本。 此帮助文本显示在主窗口的右侧。这很好。

现在,我想为每个控件添加一个工具提示。工具提示的内容应与helptext扩展名相同。

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'属性没有   找到'object'''ListView'   (名称= 'ListViewSources')”。   BindingExpression:路径=助手:HelpExtension.HelpText;   的DataItem = '的ListView'   (名称= 'ListViewSources');目标   element是'TextBlock'(Name ='');   target属性是'Text'(类型   '字符串')

有没有人知道如何将TextBlock绑定到Helper的内容:HelpExternsion.HelpText?

2 个答案:

答案 0 :(得分:0)

只需在附加的属性名称周围添加括号:

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

答案 1 :(得分:0)

你的意思是绑定附属物?在这种情况下,您需要额外的括号:

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

例如,请参阅here