WPF样式的绑定导致无法解释&&找不到管理框架元素&q;错误 [英] Binding in WPF style causes inexplicable "Cannot find governing FrameworkElement" error

查看:5
本文介绍了WPF样式的绑定导致无法解释&&找不到管理框架元素&q;错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个ItemsControl,它显示一串矩形。每个矩形需要向上和向左偏移。因此,我创建了一个RectangleStyle,它使用绑定来设置矩形的宽度、高度、X平移和Y平移。

宽度和高度绑定工作正常,但TranslateTransform绑定出现以下错误:

System.Windows.Data错误:2:找不到目标元素的管理FrameworkElement或FrameworkContent Element。BindingExpression:Path=Offset.X;DataItem=NULL;目标元素为‘Transform’(哈希码=16452547);目标属性为‘X’(类型为‘Double’)

以下是MyItemControl的定义:

<ItemsControl
    Style="{StaticResource ItemsControlStyle}"
    ItemsSource="{Binding Zones}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Rectangle Style="{StaticResource RectangleStyle}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

以下是ItemsControlStyle的定义:

<Style x:Key="ItemsControlStyle" TargetType="ItemsControl">
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <Canvas />
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="ItemContainerStyle">
        <Setter.Value>
            <Style>
                <Setter Property="Canvas.Left" Value="{Binding Point.X}" />
                <Setter Property="Canvas.Top" Value="{Binding Point.Y}" />
            </Style>
        </Setter.Value>
    </Setter>
</Style>

这里是RectangleStyle的定义:

<Style x:Key="RectangleStyle" TargetType="Rectangle">
    <Setter Property="Width" Value="{Binding Size.Width}" />
    <Setter Property="Height" Value="{Binding Size.Height}" />
    <Setter Property="RenderTransform">
        <Setter.Value>
            <!-- these bindings are causing the error -->
            <TranslateTransform X="{Binding Offset.X}" Y="{Binding Offset.Y}" />
        </Setter.Value>
    </Setter>
</Style>

RectangleStyleRenderTransformsetter中的两个绑定是错误的原因,但我不确定如何解决该问题。有趣的是,图形正在被正确转换,因此WPF能够解析绑定--它只是出于某种原因对它们不满意。

我可以做些什么来修复绑定?


编辑

我在MS Connect上提交了错误报告:

https://connect.microsoft.com/VisualStudio/feedback/details/746840/misleading-cannot-find-governing-frameworkelement-error-message-appears-in-output-window

推荐答案

我也无法解释为什么会出现错误消息,但我发现向转换添加x:Name属性是消除错误消息的一种方法:

<TranslateTransform x:Name="myTransform" X="{Binding Offset.X}" Y="{Binding Offset.Y}" /> 

这篇关于WPF样式的绑定导致无法解释&&amp;找不到管理框架元素&amp;q;错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆