XAML 绑定到附加属性

rqdpfwrv  于 2023-04-27  发布在  其他
关注(0)|答案(2)|浏览(137)

我写了一个附加的属性,其中存储了一个帮助文本。这个帮助文本显示在主窗口的右侧。这工作正常。
现在,我想为每个控件添加一个工具提示。工具提示的内容应该与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>

如果我运行这个程序,我会得到绑定错误:
系统.Windows.数据错误:39:BindingExpression路径错误:在“object”“ListView”(Name ='ListViewSources')上未找到“Helper:HelpExtension”属性。BindingExpression:Path=Helper:HelpExtension.HelpText;DataItem='ListView'(Name='ListViewSources');目标元素为“TextBlock”(Name ='');目标属性为“Text”(类型为“String”)
有谁知道如何将TextBlock绑定到Helper:HelpExternsion.HelpText的内容?

bttbmeg0

bttbmeg01#

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

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

ddarikpa2#

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

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

例如,参见here

相关问题