x:UWP XAML中的静态

时间:2015-08-12 11:28:51

标签: c# enums windows-10 uwp

我正在处理的应用程序需要将ConverterParameter作为枚举。为此,常规方法是:

{Binding whatever, 
    Converter={StaticResource converterName}, 
    ConverterParameter={x:Static namespace:Enum.Value}}

但是,UWP平台x:名称空间似乎没有静态扩展名。

有没有人知道是否有一个解决方案不依赖于x:Static来比较绑定中的枚举?

4 个答案:

答案 0 :(得分:36)

这适用于UWP:

<Button Command="{Binding CheckWeatherCommand}">
  <Button.CommandParameter>
     <local:WeatherEnum>Cold</local:WeatherEnum>
  <Button.CommandParameter>
</Button>

答案 1 :(得分:7)

UWP(以及WinRT平台)上没有静态标记扩展。

可能的解决方案之一是使用枚举值作为属性创建类,并在ResourceDictionary中存储此类的实例。

示例:

vbRetry

这是我们的枚举值类:

vbIgnore

在您的ResourceDictionary中:

public enum Weather
{
    Cold,
    Hot
}

我们在这里:

public class WeatherEnumValues
{
    public static Weather Cold
    {
        get
        {
            return Weather.Cold;
        }
    }

    public static Weather Hot
    {
        get
        {
            return Weather.Hot;
        }
    }
}

答案 2 :(得分:7)

我所知道的最简洁的方式......

    proyecto.addParticipation(participation);
    proyectoManager.saveProyecto(proyecto);

在XAML中定义枚举值:

public enum WeatherEnum
{
    Cold,
    Hot
}

只需使用它:

<local:WeatherEnum x:Key="WeatherEnumValueCold">Cold</local:WeatherEnum>

答案 3 :(得分:0)

这是一个利用资源而没有转换器的答案:

查看

<Page
.....
xmlns:local="using:EnumNamespace"
.....
>
  <Grid>
    <Grid.Resources>
        <local:EnumType x:Key="EnumNamedConstantKey">EnumNamedConstant</local:SettingsCats>
    </Grid.Resources>

    <Button Content="DoSomething" Command="{Binding DoSomethingCommand}" CommandParameter="{StaticResource EnumNamedConstantKey}" />
  </Grid>
</Page>

<强>视图模型

    public RelayCommand<EnumType> DoSomethingCommand { get; }

    public SomeViewModel()
    {
        DoSomethingCommand = new RelayCommand<EnumType>(DoSomethingCommandAction);
    }

    private void DoSomethingCommandAction(EnumType _enumNameConstant)
    {
     // Logic
     .........................
    }