【问题标题】:Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='MahApps.Metro.Controls.Glow', AncestorLevel='1''找不到与引用'RelativeSource FindAncestor,AncestorType ='MahApps.Metro.Controls.Glow',AncestorLevel ='1''绑定的源
【发布时间】:2013-06-28 14:20:50
【问题描述】:

我创建了一个 wpf 应用程序,在其中我使用 MahApps Metro 工具作为我的视图窗口。我的应用程序运行良好,但绑定错误显示在输出窗口中。我没有使用该错误中提到的任何代码。

错误是:

找不到与引用“RelativeSource”绑定的源 FindAncestor, AncestorType='MahApps.Metro.Controls.Glow', 祖先级别='1''。绑定表达式:路径=发光颜色;数据项=空; 目标元素是“SolidColorBrush”(HashCode=9047482);目标 属性是“颜色”(输入“颜色”)

xml代码:

<Controls:MetroWindow 
    x:Name="MainWin"
    x:Class="TimeSheet.DayView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:l="clr-namespace:TimeSheet.Views.DataTemplateSpace"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
    Title="DayView" Width="596" Height="596">

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colours.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
        </ResourceDictionary.MergedDictionaries>

<DataTemplate x:Key="DefaultDataTemplate">
            <StackPanel Orientation="Horizontal" Width="596">
                <TextBox Text="{Binding ClientNameBinding}" Background="Transparent" Padding="0" Margin="0" BorderThickness="0" TextWrapping="Wrap" Width="145"/>
                <TextBox Text="{Binding ApplicationNameBinding}" Background="Transparent" Padding="0" Margin="0" BorderThickness="0" TextWrapping="Wrap" Width="90"/>
                <TextBox Text="{Binding StartTimeBinding}" Background="Transparent" Padding="0" Margin="0" BorderThickness="0" TextWrapping="Wrap" Width="100"/>
                <TextBox Text="{Binding StopTimeBinding}" Background="Transparent" Padding="0" Margin="0" BorderThickness="0" TextWrapping="Wrap" Width="60"/>
                <TextBox Text="{Binding ProjectNameBinding}" Background="Transparent" Padding="0" Margin="0" BorderThickness="0" TextWrapping="Wrap" Width="130"/>
                <TextBox Text="{Binding TaskNameBinding}" Background="Transparent" Padding="0" Margin="0" BorderThickness="0" TextWrapping="Wrap" Width="71"/>
            </StackPanel>
        </DataTemplate>

<StackPanel Orientation="Horizontal" Margin="-1,93,1,434" RenderTransformOrigin="1.155,0.47" Height="25">
            <TextBox Text="Client" HorizontalContentAlignment="Center" Width="145" Foreground="White" Background="Blue" Padding="0" BorderThickness="0" VerticalContentAlignment="Center"/>
            <TextBox Text="Application" HorizontalContentAlignment="Center" Width="90" Foreground="White" Background="Blue" Padding="0" BorderThickness="0" VerticalContentAlignment="Center"/>
            <TextBox Text="StartTime" HorizontalContentAlignment="Center" Canvas.Left="148" Canvas.Top="86" Width="100" Foreground="White" Background="Blue" Padding="0" BorderThickness="0" RenderTransformOrigin="0.5,0.5" VerticalContentAlignment="Center"/>
            <TextBox Text="StopTime" HorizontalContentAlignment="Center" Width="60" RenderTransformOrigin="0.471,0.692" Foreground="White" Background="Blue" Padding="0" BorderThickness="0" VerticalContentAlignment="Center"/>
            <TextBox Text="Task" HorizontalContentAlignment="Center" Canvas.Left="378" Canvas.Top="86" Width="130" Foreground="White" Background="Blue" Padding="0" BorderThickness="0" VerticalContentAlignment="Center"/>
            <TextBox Text="Project" HorizontalContentAlignment="Center" Width="71" Foreground="White" Background="Blue" Padding="0" BorderThickness="0" VerticalContentAlignment="Center"/>
        </StackPanel>

<ListBox x:Name="listBox1" ItemsSource="{Binding}" Margin="0,131,0,59" ItemTemplateSelector="{StaticResource templateSelector}" SelectionMode="Single">
            <ListBox.ItemContainerStyle>
                <Style TargetType="{x:Type ListBoxItem}">
                    <EventSetter Event="MouseDoubleClick" Handler="listBox1_MouseDoubleClick">
                    </EventSetter>
                </Style>
            </ListBox.ItemContainerStyle>
        </ListBox>

</Controls:MetroWindow>

【问题讨论】:

    标签: c# wpf xaml relativesource findancestor


    【解决方案1】:

    这听起来像是与您的全局样式、模板或用户控件相关的绑定错误。

    我写了一些关于调试绑定错误here

    总而言之,最简单的方法是在分号和逗号处添加换行符,然后向后读取错误

    用你的错误来做,你会得到这个:

    目标属性是“颜色”(类型“颜色”) 目标元素是“SolidColorBrush”(HashCode=9047482); 数据项=空; 找不到与参考'RelativeSource FindAncestor 绑定的源, AncestorType='MahApps.Metro.Controls.Glow', 祖先级别='1''。 绑定表达式:路径=发光颜色;

    它告诉你:

    • 在某处有 Color 属性导致绑定错误。

    • 该属性位于SolidColorBrush 对象上

    • 该项目的DataContextnull

    • 它遇到问题的绑定是 RelativeSource 绑定,它在可视化树的更深处寻找 MahApps.Metro.Controls.Glow 对象,因此它可以找到该对象的 GlowColor 属性并使用它。

    尝试在您的应用程序中搜索GlowColor,看看是否可以找到它。它很可能在您的 Colours.xaml 文件中,因为它可能包含您的 SolidColorBrush 对象。

    【讨论】:

      猜你喜欢
      • 2018-09-01
      • 1970-01-01
      • 2013-03-07
      • 2016-04-08
      • 2012-08-16
      • 1970-01-01
      • 2011-04-23
      • 2011-01-18
      • 2011-03-12
      相关资源
      最近更新 更多