【问题标题】:Use ENUM in WPF XAML as Array Index在 WPF XAML 中使用 ENUM 作为数组索引
【发布时间】:2019-11-12 16:47:20
【问题描述】:

我在命名空间 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 转换枚举值,则会错过 NotifyEvent。

希望以前有人遇到过这个问题并可以给我建议。提前感谢您的每一个提示。

【问题讨论】:

  • 如果您能解释一下“它不起作用”是什么意思,那真的很有帮助。你有例外吗?告诉我们例外情况。编译器错误? Tell us the error.
  • 是的,您是对的,感谢您的提示。我编辑问题。

标签: c# wpf indexing enums binding


【解决方案1】:

这是正确的语法:

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

这也有效,即将BindingSource 设置为您的枚举值:

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

【讨论】:

  • 如果我输入 p 的定义,它会显示错误“名称“parBez”在命名空间“clr-namespace:Parameter.Model”中不存在,并且不再编译。XAML视图在项目应用程序中,枚举和相应的文件是项目参数,它们都组合在一个解决方案中。参数的输出是一个 DLL。如果我使用我的 p 定义和你的内容定义,它会编译但显示文本如果枚举编号为 0,则在 Content 中使用“VAL1”。我的目标是在 XAML 定义中将枚举编号作为我的数组的索引。您还有其他提示吗?
  • @Nelf:您在原始帖子中没有提到任何有关获取号码的内容,是吗?如果你想要一个 int,为什么要使用枚举?
  • @Nelf:如果枚举是在另一个项目中定义的,则应将程序集名称添加到命名空间声明中:xmlns:p="clr-namespace:Parameter.Model;assembly=Parameter"
  • 你好mm8,首先我要感谢你的回答。我确实将程序集添加到开始问题中所写的命名空间声明中,结果是枚举变量(“Val1”)的名称作为文本写入我的按钮。请看一下我开始的问题:最后我想使用枚举值作为数组参数的索引。我的带有按钮文本的帖子只是对 bether 理解的测试。我希望你能再次帮助我,给我一个提示。
  • @Nelf:你得到了不是int的枚举值的ToString()表示。
猜你喜欢
  • 2021-12-25
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
相关资源
最近更新 更多