在Xamarin Forms中绑定BackgroundColor属性ContentPage

时间:2017-08-30 09:47:39

标签: c# binding xamarin.forms

我需要从字符串中绑定背景颜色。 我的xaml代码:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Fimap.LoadingPage"
             BackgroundColor="{Binding ColorBackground}">
    <ContentPage.Content>
        <Grid Padding="130" x:Name="griglia">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="10*"></RowDefinition>
                <RowDefinition Height="40*"></RowDefinition>
                <RowDefinition Height="25*"></RowDefinition>
                <RowDefinition Height="25*"></RowDefinition>
            </Grid.RowDefinitions>
            <Image Source="logo.png" Grid.Row="1"></Image>
            <ActivityIndicator x:Name="loading" Grid.Row="2" IsVisible="true" Color="{Binding ColorBackground}" IsRunning="true" />
        </Grid>
    </ContentPage.Content>
</ContentPage>

我的代码隐藏代码:

...
public String ColorBackground { get; set; } = "#E40000";
...

我确实在公共Class()公共构造函数之前设置了这个ColorBackground

但是不行......我哪里错了?

感谢所有

1 个答案:

答案 0 :(得分:8)

您需要绑定到Xamarin.Forms.Color,如下所示:public Color ColorBackground { get; set; } = Color.FromHex("#E40000");

您需要IValueConverter将字符串转换为颜色。

要使数据绑定有效,请确保设置页面的BindingContext属性,如下所示:BindingContext = this;

如果您使用同样位于页面代码隐藏中的属性,请使用this。如果要将任何其他类用作视图模型,可以将其设置为BindingContext。

您可能希望研究像MvvmCross的FreshMvvm这样的MVVM框架,让您的生活更轻松。