我在我的pcl中有开关控制,并对控制有一个枚举。我不知道如何将枚举的值绑定到开关上。如果开关关闭,则值为0,如果开关打开,则值为1。如何将其绑定到枚举?
<StackLayout Orientation="Horizontal" VerticalOptions="Center" HorizontalOptions="Center" Grid.Row="0" Grid.Column="1">
<Label YAlign="Center" Text="M "></Label>
<Switch x:Name="switchM" ></Switch>
</StackLayout>Enum类
public enum mActive
{
NotToggled = 0,
Toggled = 1
}发布于 2017-08-11 07:00:23
您可以为此编写一个值转换器。IsToggled属性的Switch只接受bool参数,因此必须将Enum类型转换为bool。你的看起来就像:
public class BoolToMyEnumConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is mActive)
{
return (mActive)value == 0 ? false : true;
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is bool)
{
return (bool)value ? mActive.Toggled : mActive.NotToggled;
}
return mActive.NotToggled;
}
}然后,通过在顶部添加一个名称空间声明,确保在使用此方法的页面上可以在XAML中找到它:
xmlns:local="clr-namespace:MyApp.Converters;assembly=MyApp"完成后,您可以将其添加到Page的资源字典中:
<ContentPage.Resources>
<ResourceDictionary>
<local:BoolToMyEnumConverter x:Key="myConv" />
</ResourceDictionary>
</ContentPage.Resources>然后,在开关的绑定中,可以指定:
<Switch IsToggled="{Binding MyEnumInViewModel, Converter={StaticResource myConv}}" />它引用mActive类型的视图模型中的属性。请记住,这是一个关于它应该如何工作的粗略草案。我建议您阅读价值转换器,以帮助您进一步实现这一点。
public mActive MyEnumInViewModel {get;set;}https://stackoverflow.com/questions/45628683
复制相似问题