【问题标题】:Why binding to attached property doesn't work?为什么绑定到附加属性不起作用?
【发布时间】:2017-01-03 11:48:22
【问题描述】:

为什么在这种情况下绑定到附加属性不起作用。

我希望能够将 ContentPresenter 的 ContentTemplate 属性绑定到附加属性范围:ContextMenuExtension.HeaderDataTemplate。在下面的 xaml 中,我在样式设置器中设置了该属性,以使代码更短。我也尝试在 ContextMenu 对象上设置它。每次我收到错误

BindingExpression path error: '(extent:ContextMenuExtension.HeaderDataTemplate)' property not found on 'object' ''ContextMenu' (Name='')'. BindingExpression:Path=(extent:ContextMenuExtension.HeaderDataTemplate); DataItem='ContextMenu' (Name=''); target element is 'ContentPresenter' (Name=''); target property is 'ContentTemplate' (type 'DataTemplate')

xaml:

<Style TargetType="{x:Type ContextMenu}" >
    <Setter Property="extent:ContextMenuExtension.HeaderDataTemplate" Value="{StaticResource DataTemplate}"></Setter>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ContextMenu}">
                <Grid>
                    <AdornerDecorator>
                        <Border  Margin="8" Padding="0 8 0 8" Background="White" Effect="{DynamicResource MDShadow2}"/>
                    </AdornerDecorator>

                    <Border Margin="8" Padding="0 8 0 8">

                        <StackPanel Orientation="Vertical">

                            <Grid  HorizontalAlignment="Stretch" Margin="0 -8 0 0">
                                <ContentPresenter ContentTemplate="{Binding  (extent:ContextMenuExtension.HeaderDataTemplate), RelativeSource={RelativeSource TemplatedParent}}" />
                            </Grid>

                            <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle" />
                        </StackPanel>

                    </Border>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

【问题讨论】:

    标签: wpf data-binding


    【解决方案1】:

    绑定到附加属性时,添加Path=

    <ContentPresenter ContentTemplate="{Binding Path=(extent:ContextMenuExtension.HeaderDataTemplate), RelativeSource={RelativeSource TemplatedParent}}" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 2018-10-31
      相关资源
      最近更新 更多