Resharper가 CustomBinding MarkupExtension에 대한 경로를 확인하는 방법
일반 WPF 바인딩처럼 동작하지만 더 많은 작업을 수행하는 확장 된 Binding-Markup-Extension을 만들고 싶습니다 (다른 기본값을 사용하거나 일부 동작을 추가하는 등). 코드는 다음과 같습니다.
public class CustomBindingExtension : Binding
{
.. some extra properties and maybe overrides ...
}
Resharper가 내 Binding-Path를 올바르게 해결할 수 없다는 점을 제외하고는 XAML-intellisense를 포함하여 모두 잘 작동합니다. 즉 :이 코드를 사용하여 'CurrentText'를 [Strg] + 클릭하면 Resharper에서 vs2010이 CurrentText-Property를 정의하는 코드로 이동할 수 있습니다.
<UserControl x:Name="uc" ...>
<TextBox Text="{Binding ViewModel.CurrentText, ElementName=uc}" />
</UserControl>
그러나 사용하여 나의 이 일부 'MS.Internal.Design.Metadata.ReflectionTypeNode', 그리고를 통해 어떤 네비게이션입니다 말해 'CurrentText'를 유혹 할 때 런타임에 제대로 작동하는, 바인딩, 난 그냥 풍선 도움말을 얻을 [STRG는] +를 클릭합니다.
<UserControl x:Name="uc" ...>
<TextBox Text="{util:CustomBinding ViewModel.CurrentText, ElementName=uc}" />
</UserControl>
다음과 같은 시도를했습니다.
또한 원래 클래스 인 Binding 및 BindingBase를 살펴 보았지만 내 코드에서 더 이상 차이점을 찾을 수 없었습니다. 여기에 도움이 될 아이디어가 있습니까? 아니면 내 자신의 MarkupExtensions에 대해 얻을 수없는 Binding-MarkupExtension의 특수 처리 일 뿐입니 까?
2011 년 3 월 16 일 업데이트 : Resharper의 버그 또는 결함 일 수도 있습니다. Jetbrains는 문제를 조사하고 있습니다. http://youtrack.jetbrains.net/issue/RSRP-230607
업데이트 10.12.2013 : 한편, 기능은 작동하는 것 같습니다 (R # 7.1.3, 아마도 이전 버전에서도 가능), 저는 실제로 BindingDecoratorBase와 함께 접근 방식을 사용하고 있습니다. MarkupExtension이 'Binding'으로 끝나는 경우에만 작동 할 수 있지만 내 것이 작동하므로 기쁩니다.
실제로 현재 버전의 R #에서는 불가능하며 안타깝게도 향후 R # 6.1 릴리스의 기능이 여전히 누락되어 있습니다.
이 기능은 많은 인프라 변경 이 필요 하지만 목록에 있으며 확실히 R # 7에서 구현 될 것입니다. like [CustomBindingMarkup]
and [BindingPath]
( path
생성자 매개 변수 및 Path
속성의 경우) 속성이 도입 될 것입니다.
불편을 드려 죄송합니다.
올바른 네임 스페이스를 사용하여 사용자 지정 Markup-Extension에 액세스해야합니다.
<UserControl x:Name="uc" ...
xmlns:ext="clr-ns:YourProjectNamespace">
<TextBox Text="{ext:CustomBinding ViewModel.CurrentText, ElementName=uc}" />
</UserControl>
다음 은 사용자 지정 마크 업 확장을 만드는 방법에 대한 좋은 기사입니다.
R #을 속이는 한 가지 방법은 이름을 Binding으로 지정하는 것입니다.
public class Binding : MarkupExtension
{
public Binding()
{
}
public Binding(string path)
{
Path = path;
}
public string Path { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider)
{
return 5;
}
}
그런 다음 R #을 사용한 표준 바인딩과 동일하게 작동합니다.
<TextBlock Text="{custom:Binding SomeProp}" />
'IT Share you' 카테고리의 다른 글
GCC의 -Wpsabi 옵션은 정확히 무엇을합니까? (0) | 2020.12.05 |
---|---|
프로모션 코드를 통한 인앱 구매는 빈 개발자 페이로드 문자열을 반환합니다. (0) | 2020.12.05 |
ASP.NET Webforms에서 AJAX 용 jQuery 사용 (0) | 2020.12.05 |
Android 커널 디버깅 (0) | 2020.12.05 |
Flash를 17 번 다시로드하면 오류 # 2046이 발생하고 브라우저를 다시 시작해야합니다. (0) | 2020.12.05 |