C# System.Windows.Data错误:4:找不到与引用绑定的源
我在一个VS 2012解决方案中有3个项目。下面是引发此错误的XAML文件,它位于项目A中。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
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>