无法在WPF中找到静态引用的枚举类型

Chr*_*der 14 wpf enums .net-4.0 valueconverter c#-4.0

我正在尝试将枚举绑定到WPF中的单选按钮(受​​此答案的启发),但我无法找到转换器参数的枚举类型:

枚举按以下方式定义

namespace Application.Models
{
    public class Enums
    {
        public enum MySelections { one, two ,three };

        public MySelections CurrentSelection;

        ...

    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试绑定这样的复选框(假设数据上下文是正确的并且实现了值转换器:)

<Window x:Class="Application.MainWindow"
        ....
        xnlns:models="clr-namespace:Application.Models" >

...
<RadioButton Content="One"
             IsChecked="{Binding Path=CurrentSelection, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static models:Enums.MySelections.one}}" />
...
Run Code Online (Sandbox Code Playgroud)

问题在于{x:Static models:Enums.MySelections.one}不断抛出models:Enums.MySelections无法找到类型的错误.

我怎样才能找到我的枚举类型?

Joh*_*wen 41

使用"+"代替"." 在XAML中获取嵌套类型:

{x:Static models:Enums+MySelections.one}
Run Code Online (Sandbox Code Playgroud)


Dan*_*zey 14

你可以在你的课外声明它:

namespace Application.Models
{
    public enum MySelections { one, two, three };

    public  class Enums
    {
        public MySelections CurrentSelection;
Run Code Online (Sandbox Code Playgroud)

然后这个xaml将工作:

.... ConverterParameter={x:Static models:MySelections.one}
Run Code Online (Sandbox Code Playgroud)

x:Static标记有固定的语法:

{x:静态前缀:typeName.staticMemberName}