C# 在XAML中使用委托
在元素上使用事件时,我只需将EventHandler的名称写成字符串,它就可以工作了:C# 在XAML中使用委托,c#,wpf,xaml,xamarin.forms,resharper,C#,Wpf,Xaml,Xamarin.forms,Resharper,在元素上使用事件时,我只需将EventHandler的名称写成字符串,它就可以工作了:。更妙的是,VisualStudio检查代码背后是否真的存在这样的EventHandler。(这可能是ReSharper的一个功能,我不确定) 如何对添加到元素中的Func执行相同的操作?(我没有考虑使用转换器,因为我认为它需要运行时反射,这会降低速度。我正在寻找像EventHandler这样的设计时解决方案) 我想要一个返回Func的viewmodel属性,并且我想要XAML将其视为事件处理程序或类似的处理程
。更妙的是,VisualStudio检查代码背后是否真的存在这样的EventHandler。(这可能是ReSharper的一个功能,我不确定)
如何对添加到元素中的Func执行相同的操作?(我没有考虑使用转换器,因为我认为它需要运行时反射,这会降低速度。我正在寻找像EventHandler这样的设计时解决方案)
我想要一个返回Func的viewmodel属性,并且我想要XAML将其视为事件处理程序或类似的处理程序 这可以通过DependencyProperty实现 例如: 从“酷”按钮调用该函数非常简单
if (MyFunc != null)
{
MyFunc(value);
}
我不太明白你的问题。但如果您想要像按钮中那样的EventHandler,只需使用
public EventHandler Clicked代码>
公共类自定义按钮:按钮
{
公共自定义按钮()
{
}
公共事件处理程序;
}
我确实建议您使用绑定方法,而不是代码隐藏。我只做了十年C#,而WPF只做了五年;你能帮我理解什么是“我添加到元素中的函数”吗?如何添加它?一个包含Func类型属性的类(实际上可以是任何类型的委托)。简而言之,我的目标是使用返回类型的处理程序。您不能直接将委托绑定到XAML属性-您必须将其包装在方法中(这就是事件处理程序),或者使用带有类型转换器的{Binding}
将Func
转换为MethodInfo
(IIRC-虽然我不确定这是否真的有效)。理想情况下,您应该使用命令=“{Binding}”
,而不是单击
,但这是另一种讨论)。顺便说一下,XAML中的所有内容都使用运行时反射。不要担心调用单击事件的开销,除非您预期用户每秒单击数千次。你不能做你想做的事;您需要一个命令或附加的行为。那么,这是视图的属性还是视图模型的属性?@EdPlunkett我也不想丢失EventHandler在XAML中的设计时检查。
private int DoSomething(int foo)
{
return foo++;
}
if (MyFunc != null)
{
MyFunc(value);
}