Невозможно найти тип перечисления для статической ссылки в WPF

Я пытаюсь привязать перечисление к переключателю в WPF (на основе этот ответ), но мне не удается найти тип перечисления для параметра конвертера:

Перечисление определяется следующим образом

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

        public MySelections CurrentSelection;

        ...

    }
}

Я пытаюсь привязать сейчас такой флажок (предполагается, что контекст данных правильный и реализован преобразователь значений :)

<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}}" />
...

Проблема заключается в {x:Static models:Enums.MySelections.one}, который постоянно выдает ошибку, что тип models:Enums.MySelections не может быть найден.

Как я могу найти свой тип перечисления?


person Christian Studer    schedule 15.04.2011    source источник
comment
это сработает, если вы переместите определение перечисления вверх в пространство имен и удалите класс Enum из привязки?   -  person Jodrell    schedule 15.04.2011


Ответы (2)


Используйте "+" вместо "." чтобы перейти к вложенному типу в XAML:

{x:Static models:Enums+MySelections.one}
person John Bowen    schedule 15.04.2011
comment
За исключением того, что в VS2010, по крайней мере, это приводит к тому, что дизайнер не может загрузить представление, поэтому вы даже не можете увидеть, что пытаетесь создать. - person Neutrino; 16.08.2012
comment
+1 - У меня работает. Однако, похоже, это не работает с x: Type. Не поддерживает ли x: Type этот синтаксис? (например, {x: Type models: Enums + MySelections}) - person hashlock; 14.11.2012
comment
Здорово! Это должно быть отмечено как правильный ответ. - person migle; 20.02.2019

Вы можете объявить это вне своего класса:

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

    public  class Enums
    {
        public MySelections CurrentSelection;

И тогда этот xaml будет работать:

.... ConverterParameter={x:Static models:MySelections.one}

Разметка x:Static имеет фиксированный синтаксис:

{x: Статический префикс: typeName.staticMemberName}

person Dan Puzey    schedule 15.04.2011
comment
Вот и все, спасибо. Чтобы прояснить, где сейчас находится это перечисление? Статический член пространства имен? - person Christian Studer; 15.04.2011