gpt4 book ai didi

wpf - 用户控件的 Func 属性

转载 作者:行者123 更新时间:2023-12-02 08:58:16 26 4
gpt4 key购买 nike

我有一个用户控件,我想添加 Func 类型的依赖属性,以便我可以在 XAML 中为其分配一个方法处理程序。但是,这将导致 XAMLParseException:“Func`2”类型没有公共(public) TypeConverter 类。我究竟做错了什么?我是否需要为 Func 实现 TypeConverter 还是有更好的方法?

用户控件 (MyUserControl) 中的 Func 依赖属性:

public Func<int, int> MyFunc
{
get { return (Func<int, int>)GetValue(MyFuncProperty); }
set { SetValue(MyFuncProperty, value); }
}

public static readonly DependencyProperty MyFuncProperty =
DependencyProperty.Register("MyFunc",
typeof(Func<int, int>),
typeof(SillyCtrl),
new UIPropertyMetadata(null));

使用 DP、XAML 的示例:

<Window x:Class="FuncTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:FuncTest="clr-namespace:FuncTest"
Title="Window1" Height="300" Width="300">
<Grid>
<FuncTest:MyUserControl MyFunc="SquareHandler" />
</Grid>
</Window>

隐藏代码:

namespace FuncTest
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();

SquareHandler = (arg => arg * arg);

DataContext = this;
}

public Func<int, int> SquareHandler { get; set; }
}
}

最佳答案

MyFunc="SquareHandler"

意味着将“MyFunc”属性设置为“SquareHandler”字符串,这就是为什么它要求您提供一个能够将字符串转换为 Func 的 TypeConverter,将其更改为

<FuncTest:MyUserControl MyFunc="{Binding SquareHandler}" />

使用当前DataContext的SquareHandler属性。

关于wpf - 用户控件的 Func 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3238646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com