Xamarin Forms StyleClass绑定

时间:2018-08-19 20:55:50

标签: xamarin xamarin.forms xamarin.ios

我希望能够通过等价于更改元素的 StyleClass IsParentSelect ? "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}" />

ViewModel

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();
    }
}

0 个答案:

没有答案