Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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中的多个索引属性?_.net_Wpf_Xaml_Data Binding_Binding - Fatal编程技术网

绑定到.NET中的多个索引属性?

绑定到.NET中的多个索引属性?,.net,wpf,xaml,data-binding,binding,.net,Wpf,Xaml,Data Binding,Binding,绑定到此属性相当简单: public Foo MyFoo {get; set;} public class Foo { public object this[object key] } 因为在XAML中,您可以执行以下操作: <Label Content="{Binding MyFoo["key"]}"/> 以下是我尝试过的一些绑定: <Label Content="{Binding MyFoo["key"]}"/> <Label Content="{

绑定到此属性相当简单:

public Foo MyFoo {get; set;}

public class Foo
{
    public object this[object key]
}
因为在XAML中,您可以执行以下操作:

<Label Content="{Binding MyFoo["key"]}"/>
以下是我尝试过的一些绑定:

<Label Content="{Binding MyFoo["key"]}"/>
<Label Content="{Binding MyFoo.Item["key"]}"/>
<Label Content="{Binding MyFoo.Item2["key"]}"/>

第一个绑定仍然可以工作,但其他两个不能

有没有一个直接的解决方案,或者我需要一个解决方案?

在的建议将VB.NET类放置在程序集中,并在C#项目中引用它之后,
我发现了为什么不能直接绑定到多个索引属性

在引擎盖下,为每个额外的索引属性生成两个方法:
get_X
set_X
,其中
X
是索引属性的名称

这意味着没有标记为
默认值的VB.NET索引属性实际上不存在。这就是为什么我问题中的XAML绑定说它找不到属性
Item
Item2

这个问题可能有多种解决方法。例如,您可以创建一个包含索引器属性的小型类,然后在
主窗口中拥有该类的多个实例


另一种解决方法可能是绑定到
get_X
的返回值,但我只能想象这会有多恼人,因为如果在程序集中有一个类并在C#项目中引用它,那么这样你就得不到
INotifyPropertyChanged

的好处,代码如何访问这两个索引属性?因为如果它在VB中是可能的,这意味着它以某种方式反映在MSIL中,因此必须可以从C#访问。以前从未见过。@Jobo,谢谢你这个聪明的主意。这让我找到了一个我可以接受的答案。
<Label Content="{Binding MyFoo["key"]}"/>
<Label Content="{Binding MyFoo.Item["key"]}"/>
<Label Content="{Binding MyFoo.Item2["key"]}"/>