如何解决在Visual Studio中,如何快速从XAML绑定路径导航到相应的代码?
| 我希望能够轻松地从XAML代码导航: <Binding Path=\"Duration\">
属性的相应C#代码:
public static DependencyProperty DurationProperty =
DependencyProperty.Register(\"Duration\",typeof(int),typeof(MainWindow));
我似乎最能做的就是转到包含代码的文件,然后我必须执行文本搜索。似乎应该有更好的方法。
答案可能已经存在,但是我还没有找到正确的关键词组合。
解决方法
由于绑定不是强类型引用,因此我看不到任何方法,它只是要使用的属性的名称,除了您知道哪个类定义了此属性之外,没有人可以使用。尽管例如使用Resharper,您可以使用
navigate to member
(在IntelliJ模式中为ctrl + alt + shift + N)并在其中搜索Duration
,但这将为您提供定义Duration
成员的解决方案中的所有类。
我怀疑这方面是否有任何准备就绪的产品,尽管有人可能会为Visual Studio写一些特定的插件来处理某些情况。
,只需将鼠标光标放在方法名称上,然后按F12
。
它会将您重定向到cs
文件中定义的方法。
,好吧,似乎没有标准的(免费)方法可以做到这一点。但正如其他人指出的那样,它只是带引号的字符串。因此,我在VB中编写了一个小宏,并使用Visual Studio 2010中“运行”和“运行”命令的VS2010宏/外接程序中发现的技术,将其粘贴到XAML代码编辑器的上下文菜单中
Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
\' This is intended to be used as a quick & dirty \"go to definition\" for
\' properties referenced in XAML. The idea is that you have something like:
\'
\' <Binding Path=\"InterestRate\">
\'
\' You click on the name and run the macro which looks for the current word
\' in quotes (\"InterestRate\") which should match on something like:
\'
\' MainWindow.xaml.cs(41): DependencyProperty.Register(\"InterestRate\",...
\'
Public Module QuotedSearch
Sub DoQuotedSearch()
Dim Pattern As String
DTE.ExecuteCommand(\"Edit.SelectCurrentWord\")
Pattern = \"\"\"\" & DTE.ActiveDocument.Selection.Text & \"\"\"\"
DTE.ExecuteCommand(\"Edit.FindinFiles\")
DTE.Find.FindWhat = Pattern
DTE.Find.Target = vsFindTarget.vsFindTargetFiles
DTE.Find.MatchCase = True
DTE.Find.MatchWholeWord = False
DTE.Find.MatchInHiddenText = True
DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral
DTE.Find.SearchPath = \"Current Project\"
DTE.Find.SearchSubfolders = True
DTE.Find.FilesOfType = \"*.*\"
DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResults1
DTE.Find.Action = vsFindAction.vsFindActionFindAll
If (DTE.Find.Execute() = vsFindResult.vsFindResultNotFound) Then
Throw New System.Exception(\"vsFindResultNotFound\")
End If
End Sub
End Module
但是,我仍在寻找更精确的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。