gpt4 book ai didi

c# - WPF 重载自定义绑定(bind)构造函数

转载 作者:行者123 更新时间:2023-11-30 20:16:53 27 4
gpt4 key购买 nike

这是我的代码:

public class MyBinding : Binding {

public MyBinding(string path, bool value) : base(path) { /*...*/ }

public MyBinding(string path, int value) : base(path) { /*...*/ }

}

我能做到:

<Control Property="{MyBinding Variable, True}" />

但不能这样做:

<Control Property="{MyBinding Variable, 123}" />

似乎只考虑了第一个构造函数。为什么?

最佳答案

XAML 处理器尝试调用它找到的第一个 构造函数。如果您更改构造函数的顺序或删除第一个构造函数,则可以正常工作:

public class MyBinding : Binding
{
public MyBinding(string path, int value) : base(path) { } //primary
public MyBinding(string path, bool value) : base(path) { } //secondary
}

在 XAML 中,诸如“True”和“123”之类的值不过是字符串。到 boolint 的转换由解析器在运行时执行。

XAML 不是强类型编程语言。它是一种基于 XML(文本)的标记语言。

Visual Studio 中的工具提示将显示 Int32,即使您键入:

{MyBinding Variable, xyz}

这并不意味着将 xyz 转换为 System.Int32 会在运行时成功。显然不会。

关于c# - WPF 重载自定义绑定(bind)构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47684132/

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