在WPF XAML中将ENUM用作数组索引

时间:2019-11-12 16:47:20

标签: c# wpf indexing enums binding

我在名称空间Parameter.Model中具有类型为Parameter的数组参数。我尝试绑定到特定值。如果执行以下操作,则不会出现任何问题:

...
xmlns:p="clr-namespace:Parameter.Model;assembly=Parameter"
...
<Button Content="{Binding Path=.[1].GWert, Source={x:Static p:Parameterliste.parameter},Mode=TwoWay}"/>

现在我想用我的Enum parBez定义索引:

namespace Parameter.Model
{
    public enum parBez : int
    {
        Val1,
        Val2,
        Val3,
    }
}

我尝试了来自post

的转换器参数建议

例如,我尝试了以下两行以在按钮中显示枚举作为测试:

<Button Content="{Binding Path=x:Static p:parBez.Val1,Mode=TwoWay}"/>

<Button Content="{Binding Path=.Val1, Source={x:Static p:parBez},Mode=TwoWay}"/>

但是它不起作用。

  • 第一个选项可以编译,但在按钮中不显示任何文本。输出中也没有显示消息。
  • 第二个选项无法编译,并显示以下编译器错误:

  • 无效的属性路径语法

  • 'p:parBez'成员无效,因为它没有限定类型的名称。

  • 在目标类型上找不到成员“ parBez”

有人能给我一个提示吗,或者在XAML中使用Enum并将其用作数组索引的解决方案?

我也检查了此post,但我认为ValueConverter不是我的解决方案,因为如果ValueConverter转换Enum值,则会丢失NotifyEvent。

希望有人以前有这个问题,可以告诉我。预先感谢您的每一个提示。

1 个答案:

答案 0 :(得分:0)

这是正确的语法:

<Button xmlns:p="clr-namespace:Parameter.Model" Content="{x:Static p:parBez.Val1}"/>

这也就是将Source的{​​{1}}设置为您的枚举值,

Binding