Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
.net 通过object[property]而不是object.property绑定到对象的属性_.net_Wpf_Binding_Ironpython - Fatal编程技术网

.net 通过object[property]而不是object.property绑定到对象的属性

.net 通过object[property]而不是object.property绑定到对象的属性,.net,wpf,binding,ironpython,.net,Wpf,Binding,Ironpython,我已经通读了WPF数据绑定概述,我觉得这应该是可能的,但我不能在这里进行思想上的飞跃。我知道如果我将绑定的路径设置为foo,并将源代码设置为obj,那么绑定将查看obj.foo。换句话说,将访问对象 我只想让它看起来像obj[foo]。我使用的是Ironpython,在本例中,我的obj类有一个被重写的\uu getitem\uuuuuu()调用一个成员函数并返回一个值,这就是我需要此功能的原因 下面是以编程方式编写的上述示例。这将在复选框中显示obj的foo属性: myBinding = Bi

我已经通读了WPF数据绑定概述,我觉得这应该是可能的,但我不能在这里进行思想上的飞跃。我知道如果我将绑定的
路径设置为
foo
,并将
源代码设置为
obj
,那么绑定将查看
obj.foo
。换句话说,将访问对象

我只想让它看起来像
obj[foo]
我使用的是Ironpython,在本例中,我的
obj
类有一个被重写的
\uu getitem\uuuuuu()
调用一个成员函数并返回一个值,这就是我需要此功能的原因

下面是以编程方式编写的上述示例。这将在复选框中显示
obj
foo
属性:

myBinding = Binding("foo")
myBinding.Source = obj          
acheckbox.SetBinding(CheckBox.IsCheckedProperty, myBinding)

解决方案 显然就这么简单

myBinding = Binding("[foo]")
myBinding.Source = obj          
acheckbox.SetBinding(CheckBox.IsCheckedProperty, myBinding)

您可以在绑定中使用它,例如,如果my
DataContext
/source具有属性

public string this[int i]
{
    get{...}
    set{...}
}
您可以创建如下绑定:

<TextBlock Text="{Binding [0]}"/>


编辑:我觉得我可能误解了你的问题,如果是,请告诉我。

哇,真的那么简单吗?将绑定路径设置为
[foo]
并将源代码设置为
obj
是否会使绑定访问
obj[foo]
?NotifyPropertyChanged未更新其目标时遇到问题,我想这是由于路径为
[foo]
。绑定正确地更新了它的源(实际上是它的datacontext),但是如果我在代码中更改了属性,然后调用
OnPropertyChanged(“foo”)
,目标就不会更新。凭直觉,我甚至尝试将调用更改为
OnPropertyChanged([foo]”)
,但仍然不起作用。有什么想法吗?如果需要的话,我会转移到一个单独的问题。调用
OnPropertyChanged(Binding.IndexerName)
,看看这是否有效。难以置信的是,它有效。我对这是一种什么样的遥远的巫毒魔法感到困惑,于是我找到了这篇文章:-显然这是一个常数,
“Item[]”
,它告诉绑定引擎重新扫描整个词典。不幸的是,在我的代码中,这恰好是一个昂贵的操作。。。因此,这篇文章也谈到了使用
“Item[“+key+”]”“
作为参数。这正是我需要的——但它不起作用!只有
项[]
有效。我想我得把这个问题带到它自己的问题上去。。。