Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin表单列表视图selecteditem set backgroundcolor首次不工作_C#_Xamarin.forms - Fatal编程技术网

C# Xamarin表单列表视图selecteditem set backgroundcolor首次不工作

C# Xamarin表单列表视图selecteditem set backgroundcolor首次不工作,c#,xamarin.forms,C#,Xamarin.forms,我有一个CustomViewRenderer,它可以更改Listview中项目的背景色。 如果单击某个项目,颜色会正确变化。 当我加载ListView并以编程方式设置ItemSource和SelectedItem时,Android中的颜色为标准橙色。 ListView.SelectedItem在第一次加载时不会调用Android渲染器“OnCellPropertyChanged” 我犯了什么错 正在加载列表视图: listNew = listDG.Where(g => g.check ==

我有一个CustomViewRenderer,它可以更改Listview中项目的背景色。 如果单击某个项目,颜色会正确变化。 当我加载ListView并以编程方式设置ItemSource和SelectedItem时,Android中的颜色为标准橙色。 ListView.SelectedItem在第一次加载时不会调用Android渲染器“OnCellPropertyChanged”

我犯了什么错

正在加载列表视图:

listNew = listDG.Where(g => g.check == true).ToList();
        listNew = listNew.OrderBy(g => g.beschreibung).ToList();
        listGegenstandZuordnungBinding = new BindingList<db.gegenstaendezuordnungliste>(listNew);
        lvGegenstaende.ItemsSource = listGegenstandZuordnungBinding;
        lvGegenstaende.ItemSelected += LvGegenstaende_ItemSelected; ;

        if (App.idgegenstandueb != 0)
        {
            List<db.gegenstaendezuordnungliste> listSelected = listNew.Where(g => g.idgegenstandueb == App.idgegenstandueb).ToList();
            if (listSelected.Count > 0)
            {
                lvGegenstaende.SelectedItem = listSelected[0];
            }
            else
            {
                if (listNew.Count > 0)
                {
                    lvGegenstaende.SelectedItem = listNew[0];
                    App.idgegenstandueb = listNew[0].idgegenstandueb;
                }
            }
        }
        else if (listNew.Count > 0)
        {
            App.idgegenstandueb = listNew[0].idgegenstandueb;
            lvGegenstaende.SelectedItem = listNew[0];
        }

设置所选项目时引发事件“LvGegenstaende_ItemSelected”?是,在设置LvGegenstaende.SelectedItem=listSelected[0]之后;事件被提出
protected override Android.Views.View GetCellCore(Cell item, Android.Views.View convertView, ViewGroup parent, Context context)
    {
        var listView = parent as Android.Widget.ListView;
        _selected = false;
        if (listView != null)
        {
            //    // Disable native cell selection color style - set as *Transparent*
            listView.SetSelector(Android.Resource.Color.Transparent);
            listView.CacheColorHint = Xamarin.Forms.Color.Transparent.ToAndroid();
        }
        var cell = base.GetCellCore(item, convertView, parent, context);
        return cell;
    }

    protected override void OnCellPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        base.OnCellPropertyChanged(sender, e);

        _selected = !_selected;

        var extendedViewCell = sender as CustomControl;
        if (extendedViewCell.Parent.AutomationId != null)
        {
            if (extendedViewCell.Parent.AutomationId.ToString() == "Listgegenstaende")
            {
                if (_selected)
                    extendedViewCell.View.BackgroundColor = Color.FromHex("4682B4");
                else
                    extendedViewCell.View.BackgroundColor = Color.FromHex("#5096D0");
            }
        }
        else
        {
            if (_selected)
                extendedViewCell.View.BackgroundColor = Color.Black;
            else
                extendedViewCell.View.BackgroundColor = Color.Transparent;
        }
    }