Unable to find enum type for static reference in WPF

人盡茶涼 提交于 2019-12-17 20:43:38

问题


I'm trying to bind an enum to a radio button in WPF (Inspired by this answer), but I have trouble finding the enum type for the converter parameter:

The enum is defined in the following way

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

        public MySelections CurrentSelection;

        ...

    }
}

I am trying to bind now the checkbox like this (The data context is assumed to be correct and the value converter implemented:)

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

The problem lies with {x:Static models:Enums.MySelections.one} which constantly throws the error that the type models:Enums.MySelections could not be found.

How can I find my enum type?


回答1:


Use "+" instead of "." to get to a nested type in XAML:

{x:Static models:Enums+MySelections.one}



回答2:


You could declare it outside of your class:

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

    public  class Enums
    {
        public MySelections CurrentSelection;

And then this xaml will work:

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

The x:Static markup has the fixed syntax:

{x:Static prefix:typeName.staticMemberName}



来源:https://stackoverflow.com/questions/5676649/unable-to-find-enum-type-for-static-reference-in-wpf

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!