Я хочу создать некоторое расширенное расширение Binding-Markup-Extension, которое ведет себя так же, как обычное WPF-Binding, но выполняет некоторые другие функции (использует другие значения по умолчанию, может добавить некоторое поведение и т. Д.).
Код выглядит так:
public class CustomBindingExtension : Binding
{
.. some extra properties and maybe overrides ...
}
Все работает нормально, включая XAML-intellisense, за исключением того, что я просто не могу заставить Resharper правильно разрешить мой Binding-Path.
Т.е.: используя этот код, я могу [Strg] + нажать «CurrentText», и Resharper позволяет vs2010 перейти к коду, определяющему свойство CurrentText.
<UserControl x:Name="uc" ...>
<TextBox Text="{Binding ViewModel.CurrentText, ElementName=uc}" />
</UserControl>
Но, используя my привязку, которая работает правильно во время выполнения, я просто получаю всплывающую подсказку при наведении курсора CurrentText, говорящую мне, что это какой-то MS.Internal.Design.Metadata.ReflectionTypeNode ', и никакой навигации через [Strg] + клик.
<UserControl x:Name="uc" ...>
<TextBox Text="{util:CustomBinding ViewModel.CurrentText, ElementName=uc}" />
</UserControl>
Я пробовал следующие вещи:
Производные от привязки
Извлечь из
BindingDecoratorBase
Оставьте суффикс 'Extension' для моего класса CustomBinding
Поместите разметку-расширение в отдельную сборку
Использовать ConstructorArgumentAttribute
Свойство типа string и типа PropertyPath для Path-Property
Я также посмотрел на оригинальные классы Binding и BindingBase, но не смог найти больше различий с моим кодом.
Есть идеи, что должно помочь здесь?
Или это просто специальная обработка Binding-MarkupExtension, которую я никоим образом не могу получить для своих собственных MarkupExtensions?
Обновление 16.03.2011: возможно, ошибка или недостаток Resharper, Jetbrains расследует проблему: http://youtrack.jetbrains.net/issue/RSRP-230607
Обновление 10.12.2013: Между тем, эта функция, кажется, работает (с R # 7.1.3, возможно, также более ранними версиями), я на самом деле использую подход с BindingDecoratorBase, и мне он очень нравится.
Возможно, это сработает только в том случае, если ваше MarkupExtension заканчивается на «Binding», а у меня - так, я счастлив.