gpt4 book ai didi

c# - 索引器属性的 PropertyChanged

转载 作者:IT王子 更新时间:2023-10-29 04:05:54 25 4
gpt4 key购买 nike

我有一个带有索引器属性的类,带有一个字符串键:

public class IndexerProvider {
public object this[string key] {
get
{
return ...
}
set
{
...
}
}

...
}

我使用索引器表示法绑定(bind)到 WPF 中此类的一个实例:

<TextBox Text="{Binding [IndexerKeyThingy]}">

工作正常,但我想在其中一个索引器值更改时引发 PropertyChanged 事件。我尝试使用属性名称“[keyname]”(即在键名称周围包含 [])来引发它,但这似乎不起作用。我的输出窗口中没有任何绑定(bind)错误。

我不能使用 CollectionChangedEvent,因为索引不是基于整数的。从技术上讲,该对象无论如何都不是集合。

我可以这样做吗?如何做?

最佳答案

根据 this blog entry ,你必须使用 "Item[]"。 Item 是编译器在使用索引器时生成的属性名称。

如果你想明确一点,你可以用 IndexerName 修饰索引器属性。属性。

这将使代码看起来像:

public class IndexerProvider : INotifyPropertyChanged {

[IndexerName ("Item")]
public object this [string key] {
get {
return ...;
}
set {
... = value;
FirePropertyChanged ("Item[]");
}
}
}

至少它使意图更加明确。不过,我不建议您更改索引器名称,如果您的伙伴发现字符串 "Item[]" 是硬编码的,则可能意味着 WPF 无法处理不同的索引器名称。

关于c# - 索引器属性的 PropertyChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/657675/

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