Невозможно найти тип перечисления для статической ссылки в WPF - PullRequest
13 голосов
/ 15 апреля 2011

Я пытаюсь привязать перечисление к переключателю в 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 не может быть найден.

Как я могу найти свой тип enum?

Ответы [ 2 ]

40 голосов
/ 15 апреля 2011

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

{x:Static models:Enums+MySelections.one}
14 голосов
/ 15 апреля 2011

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

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

    public  class Enums
    {
        public MySelections CurrentSelection;

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

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

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

{х: Static Префикс: typeName.staticMemberName}

...