在XAML中使用枚举索引集合属性

在XAML中使用枚举索引集合属性,xaml,enums,indexer,Xaml,Enums,Indexer,虽然{Binding Path=CollectionProperty[2]}工作正常,但我无法让它与枚举一起工作,即{Binding Path=CollectionProperty[SomeEnum.Value2]}。如果可能的话,正确的语法是什么?谢谢。我尝试绑定到Dictionary类型的属性(其中Foo是一个枚举),如下所示: {Binding Foos[{x:Static my:Foo.Fizz}]} 。。。但这在运行时引发了绑定异常 然而,奇怪的是,使用int作为索引器,甚至对于在枚

虽然
{Binding Path=CollectionProperty[2]}
工作正常,但我无法让它与枚举一起工作,即
{Binding Path=CollectionProperty[SomeEnum.Value2]}
。如果可能的话,正确的语法是什么?谢谢。

我尝试绑定到
Dictionary
类型的属性(其中
Foo
是一个枚举),如下所示:

{Binding Foos[{x:Static my:Foo.Fizz}]}
。。。但这在运行时引发了绑定异常

然而,奇怪的是,使用int作为索引器,甚至对于在枚举上建立索引的属性,似乎也能起作用。这:

{Binding Foos[2]}
。。。工作很好。所以,如果您愿意在XAML中将枚举值表示为整数,那么您可以这样做


否则,我认为最好是通过值转换器直接绑定到
Foos
,将
{x:Static my:Foo.Bar}
作为转换器参数传递。

只需将枚举值指定为未加修饰的字符串即可。例如:

公共枚举Foo
{
价值1,
价值2
}
公共类MainWindowVm
{
公共字符串this[Foo-Foo]
{
获取{return Enum.GetName(typeof(Foo),Foo);}
}
}
指定枚举值,如下所示:



x:不需要静态标记扩展,因为XAML解析器内置了将提供的字符串映射到目标枚举支持的值的支持。

是的,这就是我要说的。使用转换是一种备用选项。谢谢,工作很好。谢谢