Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Windows.Data错误:4:找不到与引用绑定的源_C#_Wpf - Fatal编程技术网

C# System.Windows.Data错误:4:找不到与引用绑定的源

C# System.Windows.Data错误:4:找不到与引用绑定的源,c#,wpf,C#,Wpf,我在一个VS 2012解决方案中有3个项目。下面是引发此错误的XAML文件,它位于项目A中。BmpImage.cs文件存在于同一解决方案中的不同项目B中,该解决方案包含所有扩展名和帮助文件,并包含所有必需的方法和代码。项目A参考项目B 有人能帮忙吗?我的工作岌岌可危,但我被卡住了。我读过所有其他类似的问题,但没有一个能解决这个问题 我得到这个错误: System.Windows.Data错误:4:找不到与绑定的源 参考“相对资源查找器”, AncestorType='System.Windows

我在一个VS 2012解决方案中有3个项目。下面是引发此错误的XAML文件,它位于项目A中。
BmpImage.cs
文件存在于同一解决方案中的不同项目B中,该解决方案包含所有扩展名和帮助文件,并包含所有必需的方法和代码。项目A参考项目B

有人能帮忙吗?我的工作岌岌可危,但我被卡住了。我读过所有其他类似的问题,但没有一个能解决这个问题

我得到这个错误:

System.Windows.Data错误:4:找不到与绑定的源 参考“相对资源查找器”, AncestorType='System.Windows.Controls.Button',AncestorLevel='1'。 BindingExpression:Path=IsEnabled;DataItem=null;目标元素是 “BmpImage”(名称=”;目标属性为“NoTarget”(类型为“Object”)


**
**

您的代码看起来差不多正确。。。您是否尝试过在没有可选的
AncestorLevel=1
的情况下使用
Binding
表达式?我通常使用这种
绑定
,但我从不使用
AncestorLevel
属性,因为如果设置错误,或者XAML曾经更改,它可能会导致错误

<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type 
    Button}}, Path=IsEnabled}" Value="False">
    <Setter Property="UIElement.Opacity" Value="0.3" />
</DataTrigger>

使用以下代码:

using DevExpress.Xpf.Core.Native;
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;

namespace BindingErrorHelper
{
    public class IsTypeFoundConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            FrameworkElement element = value as FrameworkElement;
            Type type = parameter as Type;
            if (element != null && type != null)
            {
                element = LayoutHelper.FindElement(element, p => p.GetType() == type);
                if (element != null)
                    return true;
            }
            return false;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value;
        }
    }

    public class LayoutHelper
    {
        public static FrameworkElement FindElement(FrameworkElement treeRoot, System.Predicate<FrameworkElement> predicate)
        {
            VisualTreeEnumerator visualTreeEnumerator = new VisualTreeEnumerator(treeRoot);
            while (visualTreeEnumerator.MoveNext())
            {
                FrameworkElement frameworkElement = visualTreeEnumerator.Current as FrameworkElement;
                if (frameworkElement != null && predicate(frameworkElement))
                {
                    return frameworkElement;
                }
            }
            return null;
        }
    }
}
使用DevExpress.Xpf.Core.Native;
使用制度;
利用制度全球化;
使用System.Windows;
使用System.Windows.Data;
命名空间BindingErrorHelper
{
公共类IsTypeFoundConverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性)
{
FrameworkElement=作为FrameworkElement的值;
类型类型=参数类型;
if(元素!=null&&type!=null)
{
element=LayoutHelper.FindElement(element,p=>p.GetType()==type);
if(元素!=null)
返回true;
}
返回false;
}
公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性)
{
返回值;
}
}
公共类布局帮助器
{
公共静态FrameworkElement FindElement(FrameworkElement treeRoot,System.Predicate谓词)
{
VisualTreeEnumerator VisualTreeEnumerator=新的VisualTreeEnumerator(treeRoot);
while(visualTreeEnumerator.MoveNext())
{
FrameworkElement FrameworkElement=visualTreeEnumerator。当前为FrameworkElement;
if(frameworkElement!=null&&谓词(frameworkElement))
{
返回框架元素;
}
}
返回null;
}
}
}
将XAML代码编写为:

<tt:IsTypeFoundConverter x:Key="isTypeFoundConverter"/>

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
    <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource isTypeFoundConverter}, ConverterParameter={x:Type Button}}" Value="true"/>
        <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type Button}}, Path=IsEnabled}" Value="False"/>
    </MultiDataTrigger.Conditions>
    <MultiDataTrigger.Setters>
        <Setter Property="UIElement.Opacity" Value="0.3" />
    </MultiDataTrigger.Setters>
</MultiDataTrigger> 


这是一个实际的错误,还是只是在运行时输出,而您没有看到任何问题?我收到一个非常类似的列表框输出,它不是一个实际的错误。当我在调试模式下运行应用程序时,它是一个实际的错误。当我在非调试模式下运行应用程序时,它会崩溃,这是我试图找出应用程序崩溃的原因时从intellitrace得到的唯一错误。我刚刚尝试了绑定表达式,但没有使用AncestorLevel=1,但这并没有解决问题
<tt:IsTypeFoundConverter x:Key="isTypeFoundConverter"/>

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
    <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource isTypeFoundConverter}, ConverterParameter={x:Type Button}}" Value="true"/>
        <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type Button}}, Path=IsEnabled}" Value="False"/>
    </MultiDataTrigger.Conditions>
    <MultiDataTrigger.Setters>
        <Setter Property="UIElement.Opacity" Value="0.3" />
    </MultiDataTrigger.Setters>
</MultiDataTrigger>