WPF管理FrameworkElement未找到错误

时间:2014-01-14 21:29:30

标签: c# wpf binding

我有一堆以下类型的错误     System.Windows.Data错误:2:找不到目标元素的管理FrameworkElement或FrameworkContentElement。

除了以下两个之外,我能够解决大部分问题。

第一个错误是

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=WColor; DataItem=null; target element is 'SolidColorBrush' (HashCode=34289570); target property is 'Color' (type 'Color')

此错误的XAML代码位于

之下
<ControlTemplate.Triggers>
        <DataTrigger Binding="{Binding Path=HasWColor}" Value="True">
            <Setter TargetName="HeaderIcon" Property="Fill">
                <Setter.Value>
                    <SolidColorBrush Color="{Binding Path=WColor, Converter={StaticResource ColorToBrushConverter}}"/>
                </Setter.Value>
            </Setter>
        </DataTrigger>
    </ControlTemplate>

我能够通过使用转换器ColorToBrushConverter.在我的应用程序的另一个文件中解决一个非常类似的错误。但是同样的转换器在这里不起作用。以下是其工作的代码。

<DataTemplate x:Key="GroupTemplate">
        <StackPanel x:Name="Group" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
            <Border BorderThickness="0,2,0,3" BorderBrush="{DynamicResource TableBorderBrush}">
                <Border BorderThickness="7,0,0,0" >
                    <Border.BorderBrush>
                        <SolidColorBrush Color="{Binding GroupColor, Converter={StaticResource ColorToBrushConverter}}"/>
                    </Border.BorderBrush>
                </Border>
            </Border>
        </StackPanel>
    <DataTemplate/>

第二个错误是

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=TranslateY; DataItem=null; target element is 'TranslateTransform' (HashCode=10383263); target property is 'Y' (type 'Double')

此错误的代码是

<MultiDataTrigger.Setters>
                    <Setter Property="Visibility" Value="Visible"/>
                    <Setter Property="RenderTransform">
                        <Setter.Value>
                            <TranslateTransform x:Name="myTransform">
                                <TranslateTransform.X>
                                    <MultiBinding Converter="{StaticResource OffsetConverter}">
                                        <Binding Path="DisplayedX"/>
                                        <Binding ElementName="LinesGrid" Path="ActualWidth"/>
                                        <Binding Source="17"/>
                                    </MultiBinding>
                                </TranslateTransform.X>
                                <TranslateTransform.Y>
                                    <MultiBinding Converter="{StaticResource OffsetConverter}">
                                        <Binding Path="TranslateY"/>
                                        <Binding ElementName="PointsGrid" Path="ActualHeight"/>
                                        <Binding Source="17"/>
                                        <Binding Path="PointType"/>
                                    </MultiBinding>
                                </TranslateTransform.Y>
                            </TranslateTransform>
                        </Setter.Value>
                    </Setter>
                </MultiDataTrigger.Setters>

我尝试按照此post的建议提供TranslateTransform x:Name属性,但无济于事。

关于如何摆脱这些错误的任何想法?

1 个答案:

答案 0 :(得分:2)

对于第一个,如果您想使用转换器黑客,则应直接将其分配给Fill属性,而不是创建SolidColorBrush

<Setter TargetName="HeaderIcon" Property="Fill" Value="{Binding Path=WColor, Converter={StaticResource ColorToBrushConverter}}"/>

对于第二个,如果没有更多的调试信息,很难修复。尝试向转换器添加断点,查看在断点被触发之前或之后是否发生错误。