Bra*_*ner 11 c# wpf intellisense xaml markup-extensions
我创建了一个自定义MarkupExtension,允许一种简单的方法将事件转发FrameworkElements到视图模型上的方法.一切都很完美,除了Visual Studio在填写XAML时不提供任何Intellisense.有什么方法可以为Visual Studio提供提供Intellisense所需的信息吗?
的MarkupExtension:
public class VmCall : MarkupExtension
{
public string ActionName { get; }
public VmCall(string actionName)
{
ActionName = actionName;
}
//.....
}
Run Code Online (Sandbox Code Playgroud)
视图模型:
class TestWindowVm : ViewModel
{
public void Click()
{
MessageBox.Show("Click!");
}
}
Run Code Online (Sandbox Code Playgroud)
使用MarkupExtensionin XAML:
<Window
x:Class="WpfLib.Tests.VmCallMarkupExtension.TestWindow"
xmlns:wpfLib="clr-namespace:AgentOctal.WpfLib;assembly=WpfLib"
//Many xmlns and attributes left out of example for brevity.
d:DataContext="{d:DesignInstance TestWindowVm}"
mc:Ignorable="d">
<Button Click="{wpfLib:VmCall Click}"/>
</Window>
Run Code Online (Sandbox Code Playgroud)
理想情况下,当用户按下"VMCALL"后的空格键,智能感知应该对所有方法的列表呈现它们当前元素的DataContext(只是Click对TestWindowVm在这个具体的例子).
如果是一些方法,使这项工作的基础上,与WinForms的以往的经验,我希望某种Attribute我可以放在构造函数的参数进行VmCall告知的Visual Studio如何生成这样的说法智能感知.到目前为止,我还没有找到类似的东西.我不确定我是否真的在寻找错误的东西,或者这根本不可能做到.如果重要,我主要对Visual Studio 2017感兴趣.
我已经查看了所有列出的属性System.Windows.Markup,没有任何明显的内容突然出现在我面前.
小智 1
您已经使用字符串输入创建了一个 MarkupExtension。智能感知如何知道你想要哪个字符串?但是,例如,如果您使用枚举,智能感知会向您建议很多事情。
public enum MyEnum
{
first , second
}
public class VmCall : MarkupExtension
{
public MyEnum ActionName { get; }
public VmCall(MyEnum actionName)
{
ActionName = actionName;
}
//.....
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |