我想创建一些扩展的 Binding-Markup-Extension,它的行为就像普通的 WPF 绑定,但做的更多(使用不同的默认值,可能添加一些行为等)。代码如下所示:
public class CustomBindingExtension : Binding
{
.. some extra properties and maybe overrides ...
}
包括 XAML-intellisense 在内的一切都可以正常工作,只是我无法让 Resharper 正确解析我的 Binding-Path。即:使用此代码,我可以 [Strg]+单击“CurrentText”,Resharper 让 vs2010 导航到定义 CurrentText-Property 的代码。
<UserControl x:Name="uc" ...>
<TextBox Text="{Binding ViewModel.CurrentText, ElementName=uc}" />
</UserControl>
但是使用在运行时正常工作的绑定,当悬停“CurrentText”时,我只得到一个工具提示,告诉我它是一些“MS.Internal.Design.Metadata.ReflectionTypeNode”,并且没有通过 [Strg]+Click 导航。
<UserControl x:Name="uc" ...>
<TextBox Text="{util:CustomBinding ViewModel.CurrentText, ElementName=uc}" />
</UserControl>
我尝试了以下事情:
我还查看了原始类 Binding 和 BindingBase,但找不到与我的代码有任何不同的地方。任何想法在这里应该有什么帮助?或者这只是对我自己的 MarkupExtensions 无法获得的 Binding-MarkupExtension 的特殊处理?
更新 16.03.2011:也可能是 Resharper 的错误或缺陷,Jetbrains 正在调查该问题:http: //youtrack.jetbrains.net/issue/RSRP-230607
10.12.2013 更新:同时,该功能似乎正在运行(使用 R# 7.1.3,可能还有早期版本),我实际上使用了 BindingDecoratorBase 的方法,我非常喜欢它。如果您的 MarkupExtension 以“Binding”结尾,也许它只有效,但我的有效,所以我很高兴。