Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在XAML中使用委托_C#_Wpf_Xaml_Xamarin.forms_Resharper - Fatal编程技术网

C# 在XAML中使用委托

C# 在XAML中使用委托,c#,wpf,xaml,xamarin.forms,resharper,C#,Wpf,Xaml,Xamarin.forms,Resharper,在元素上使用事件时,我只需将EventHandler的名称写成字符串,它就可以工作了:。更妙的是,VisualStudio检查代码背后是否真的存在这样的EventHandler。(这可能是ReSharper的一个功能,我不确定) 如何对添加到元素中的Func执行相同的操作?(我没有考虑使用转换器,因为我认为它需要运行时反射,这会降低速度。我正在寻找像EventHandler这样的设计时解决方案) 我想要一个返回Func的viewmodel属性,并且我想要XAML将其视为事件处理程序或类似的处理程

在元素上使用事件时,我只需将EventHandler的名称写成字符串,它就可以工作了:
。更妙的是,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);
}