拡張されたBinding-Markup-Extensionを作成したいのですが、これは通常のWPF-Bindingと同じように動作しますが、さらにいくつかのことを行います(異なるデフォルトを使用する、動作を追加するなど)。コードは次のようになります。
public class CustomBindingExtension : Binding
{
.. some extra properties and maybe overrides ...
}
ResharperにBinding-Pathを正しく解決させることができないことを除いて、XAMLインテリセンスを含めてすべて正常に機能します。つまり、このコードを使用して[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]+クリックによるナビゲーションは表示されません。
<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」で終了する場合にのみ機能するかもしれませんが、私の場合は機能するので、私は満足しています。