首页 > 解决方案 > Xamarin 表单样式类绑定

问题描述

我希望能够通过等效的 , 来更改元素 的StyleClassIsParentSelect ? "Selected" : "",以使用 CSS 更改按钮外观。所以,我做了一个转换器来为我做这件事。

但是,我一直很头疼,试图弄清楚为什么 Binding 不适用于StyleClass属性,因为它确实适用于属性Text

在 StyleClass 属性上使用绑定时,我在 LightLambda 类中收到 NullPointerException。

任何人都知道为什么我会收到此异常?

非常感谢!

资源

<ContentPage.Resources>
    <StyleSheet Source="../Styles/Styles.css" />
    <ResourceDictionary>
        <converters:BoolConverter x:Key="boolConverter" />
    </ResourceDictionary>
</ContentPage.Resources>

绑定:

<Button StyleClass="{Binding IsParentSelected, Converter={StaticResource boolConverter}, ConverterParameter=Selected}" />

视图模型

public class IdentificationViewModel : BaseViewModel
{
    public IdentificationViewModel()
    {
        Title = "Identification";
        IsParentSelected = true;
    }

    bool isParentSelected = false;
    public bool IsParentSelected
    {
        get { return isParentSelected; }
        set { SetProperty(ref isParentSelected, value); }
    }

}

转换器

public class BoolConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var s = ((string)parameter).Split(':');

        if ((bool)value)
            return s[0].Trim();
        if (s.Length > 1)
            return s[1].Trim();
        return String.Empty;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var s = ((string)parameter).Split(':');
        return (string)value == s[0].Trim();
    }
}

标签: xamarinxamarin.formsxamarin.ios

解决方案


推荐阅读