1460.TestWPFApp.zip
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='Infragistics.Controls.Charts.FinancialLegend', AncestorLevel='1''. BindingExpression:(no path); DataItem=null; target element is 'ContentControl' (Name='financialLegendContent'); target property is 'NoTarget' (type 'Object')
I am getting the above binding error only when I have assigned an Infragistics theme using theme manager.
ThemeManager.ApplicationTheme = new Office2010BlueNew(); I have tracked the issue down to the following code in xamdatachart.xaml for the decompiled theme but I don't know how to fix it. The error seems to be generated in the ContentControlStyle DataTrigger binding.
<DataTemplate x:Key="LegendItemTemplate"> <Grid> <StackPanel Margin="{StaticResource LegendItemMargin}" Orientation="Horizontal"> <StackPanel.Style> <Style TargetType="StackPanel"> <Style.Triggers> <DataTrigger Binding="{Binding Visibility, ElementName=financialLegendContent}" Value="Visible"> <Setter Property="Visibility" Value="Collapsed" /> </DataTrigger> <DataTrigger Binding="{Binding Series.Visibility}" Value="Collapsed"> <Setter Property="Visibility" Value="Collapsed" /> </DataTrigger> </Style.Triggers> </Style> </StackPanel.Style> <ContentPresenter Margin="{StaticResource LegendItemBadgeMargin}" Content="{Binding}" ContentTemplate="{Binding Series.LegendItemBadgeTemplate}" /> <ContentControl FontFamily="{StaticResource FinancialLegendFontFamily}" FontSize="{Binding Series.ActualLegend.ItemsFontSize}" FontStretch="{Binding Series.ActualLegend.ItemsFontStretch}" FontStyle="{Binding Series.ActualLegend.ItemsFontStyle}" FontWeight="{Binding Series.ActualLegend.ItemsFontWeight}" Foreground="{Binding Series.ActualLegend.ItemsForeground}"> <ContentPresenter Content="{Binding Series.Title, TargetNullValue=Series Title}" /> </ContentControl> </StackPanel> <ContentControl x:Name="financialLegendContent" FontFamily="{Binding Series.ActualLegend.ItemsFontFamily}" FontSize="{Binding Series.ActualLegend.ItemsFontSize}" FontStretch="{Binding Series.ActualLegend.ItemsFontStretch}" FontStyle="{Binding Series.ActualLegend.ItemsFontStyle}" FontWeight="{Binding Series.ActualLegend.ItemsFontWeight}" Foreground="{Binding Series.ActualLegend.ItemsForeground}"> <ContentControl.Style> <Style TargetType="ContentControl"> <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:FinancialLegend}}" Value="{x:Null}"> <Setter Property="Visibility" Value="Collapsed" /> </DataTrigger> <DataTrigger Binding="{Binding Series.Visibility}" Value="Collapsed"> <Setter Property="Visibility" Value="Collapsed" /> </DataTrigger> </Style.Triggers> </Style> </ContentControl.Style> <Border Margin="{StaticResource FinancialLegendMargin}" Padding="{StaticResource FinancialLegendPadding}" Background="{StaticResource FinancialLegendBackgroundBrush}"> <StackPanel Orientation="Horizontal"> <ContentPresenter Margin="{StaticResource LegendItemBadgeMargin}" Content="{Binding}" ContentTemplate="{Binding Series.LegendItemBadgeTemplate}" /> <ContentControl FontSize="{StaticResource ChartSmallFontSize}" Foreground="{StaticResource ForegroundBrush}"> <ContentPresenter Content="{Binding Series.Title, TargetNullValue=Series Title}" /> </ContentControl> <TextBlock FontSize="{StaticResource ChartSmallFontSize}" Foreground="{StaticResource ForegroundBrush}" Text=": " Visibility="{Binding Visibility, ElementName=finalValue}" /> <TextBlock x:Name="finalValue" FontSize="{StaticResource ChartSmallFontSize}" FontWeight="{StaticResource FinancialLegendFinalValueWeight}" Foreground="{StaticResource ForegroundBrush}" Text="{Binding Series.FinalValue, StringFormat={}{0:0.00}}"> <TextBlock.Style> <Style TargetType="TextBlock"> <Style.Triggers> <Trigger Property="Text" Value="NaN"> <Setter Property="Visibility" Value="Collapsed" /> </Trigger> </Style.Triggers> </Style> </TextBlock.Style> </TextBlock> <TextBlock FontSize="{StaticResource ChartSmallFontSize}" Foreground="{StaticResource ForegroundBrush}" Text="{Binding Series.PercentChange, StringFormat=' ({0:0.00}%)'}"> <TextBlock.Style> <Style TargetType="TextBlock"> <Style.Triggers> <Trigger Property="Text" Value=" (NaN%)"> <Setter Property="Visibility" Value="Collapsed" /> </Trigger> </Style.Triggers> </Style> </TextBlock.Style> </TextBlock> </StackPanel> </Border> </ContentControl> </Grid> </DataTemplate>
Thank you - I have no need for a fix as it doesn't cause any problems that I can see but it's good to know how to fix it if necessary. Thanks
Hello Bob,
I have been investigating into the behavior you are seeing, and I have reproduced it. It appears that this only happens with the themes, as there is an issue with the themes versus the default style of the control. Specifically, it appears to be the binding of this DataTrigger:
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:FinancialLegend}}" Value="{x:Null}">
If you are not using the XamFinancialChart, this will cause a binding error. This differs from the default style of the XamDataChart, as the default style’s binding is this instead:
<DataTrigger Binding="{Binding Series.IsActualLegendFinancial}" Value="False">
Unfortunately, the best workaround I can offer in this case is to bring in the LegendItemTemplate and its dependencies into your application and change this and apply it to any series that you are not writing a custom LegendItemTemplate for (or remove the DataTrigger if you are not using the XamFinancialChart).
It is worth noting though, that these binding errors will not break your application unless you explicitly tell Visual Studio to break on System.Windows.Data errors in your Exception Settings, but still, this should not be happening, and I have logged a bug for it in our internal tracking system so we can track it and apply the binding mentioned above to all of the themes. This issue has an ID of 28801, and I will be linking it to a private support case that I have created for you so you can be notified of a fix when it becomes available. This support case has an ID of C-00234733, and you can access it after signing into your account, here: https://account.infragistics.com/support-cases.
Please let me know if you have any other questions or concerns on this matter.