更改列表视图单元格的背景颜色在运行时不起作用

时间:2019-07-18 06:22:08

标签: xamarin xamarin.forms

我正在使用listview。首先,它成功加载列表的所有项目。然后,我进入另一个屏幕,从那里设置背景色值并将其保存在本地。当我返回列表视图屏幕时,应该更改列表视图的行单元格的背景色。但它仍然是相同的。仅当我重新启动应用程序时,它才会更改。

我正在使用转换器在运行时更改颜色。

请让我知道我是否可以使用转换器执行此操作,还是应该更改它或为行单元格的背景色设置属性

1 个答案:

答案 0 :(得分:0)

您可以使用数据绑定并将模式设置为TwoWay

使用{Binding Mode=TwoWay},如果用户输入的字符串是有效的十六进制格式,则颜色将改变。

XAML

<ViewCell>
   <StackLayout BackgroundColor="{Binding Color}" Orientation="Vertical">

        <Entry x:Name="entry" Text="{Binding Title ,Mode=TwoWay}" TextColor="Black"/>

   </StackLayout>
</ViewCell>

型号

public class Model : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    string _title;
    public string Title 
    { 
        get 
        { 
            return _title; 
        }

        set 
        {
            if (_title!= value)
            {
                _title = value;
                NotifyPropertyChanged();

                TextColor = Color.FromHex(value);
            }
        } 
    }

    Color _textColor;
    public Color TextColor
    {
        get
        {
            return _textColor;
        }
        set
        {
            if (_textColor != value)
            {
                _textColor = value;
                NotifyPropertyChanged();
            }
        }
    }

    protected virtual void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}