我正在处理的应用程序需要将ConverterParameter作为枚举。为此,常规方法是:
{Binding whatever,
Converter={StaticResource converterName},
ConverterParameter={x:Static namespace:Enum.Value}}
但是,UWP平台x:名称空间似乎没有静态扩展名。
有没有人知道是否有一个解决方案不依赖于x:Static来比较绑定中的枚举?
答案 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
.........................
}