对于模糊的(ish)标题感到抱歉,我正在开发一个WPF项目,而且它变得相当烦人。我知道VS设计师有时候有点挑剔,但希望这是我能解决的问题。
我有一个依赖属性我也正在绑定,但是设计师给了我蓝色的波浪线并且出现错误:
Error 13 A 'Binding' cannot be used within a 'TextBlock' collection. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.
然而,当我运行应用程序时,它一切正常,没有绑定错误,这一切都按预期工作。 VS自首次发生以来已多次重启,但仍然会发生。
我看不出它所指的DependancyProperty有什么问题,所有看起来都非常标准,但也许你们其中一个人可以放弃一些亮点(希望如此)。我不记得我从哪里获得了DP的代码,我知道它是在线的,但是我已经调整过了(我想)。
运行VS2010,项目的目标是.net4.0(不是客户端配置文件)。
谢谢!
XAML
<TextBlock Grid.Column="1" Grid.Row="0" AllowDrop="True" behaviours:DropBehavior.PreviewDropCommand="{Binding Path=DropFile}" Style="{StaticResource styFile}">
DP
public static class DropBehavior {
private static readonly DependencyProperty PreviewDropCommandProperty = DependencyProperty.RegisterAttached(
"PreviewDropCommand",
typeof(ICommand),
typeof(DropBehavior),
new PropertyMetadata(null, PreviewDropCommandPropertyChangedCallBack)
);
public static void SetPreviewDropCommand(this UIElement inUIElement, ICommand inCommand) {
inUIElement.SetValue(PreviewDropCommandProperty, inCommand);
}
private static ICommand GetPreviewDropCommand(UIElement inUIElement) {
return (ICommand)inUIElement.GetValue(PreviewDropCommandProperty);
}
private static void PreviewDropCommandPropertyChangedCallBack(
DependencyObject inDependencyObject, DependencyPropertyChangedEventArgs inEventArgs) {
UIElement uiElement = inDependencyObject as UIElement;
if (null == uiElement)
return;
uiElement.Drop += (sender, args) => {
GetPreviewDropCommand(uiElement).Execute(args.Data);
args.Handled = true;
};
}
}
答案 0 :(得分:2)
经过多次提出用户界面抱怨它之后再次看了一下这个问题,原来这就是这一行:
private static readonly DependencyProperty PreviewDropCommandProperty = DependencyProperty.RegisterAttached(
"PreviewDropCommand",
typeof(ICommand),
typeof(DropBehavior),
new PropertyMetadata(null, PreviewDropCommandPropertyChangedCallBack)
);
应该是public
,而不是private
声明。好奇的是应用程序运行正常,而不是设计师(或者如果我知道VS的内部工作原则可能不那么好奇)