2017-02-01 70 views
0

這看起來像是一個非常原始的問題,應該通過更改屬性來解決。但這是我的問題:Xamarin Forms Listview disbale cell highlight

  • 用戶從列表視圖中選擇一個單元格。
  • 我重寫單元格的背景顏色,並將其設置爲適當的顏色(我們有不同的顏色主題)。
  • 當我回到我的列表視圖,並再次選擇相同的項目時,單元格會運行與以前相同的代碼,但突出顯示的顏色是默認值。

我看到的唯一方法之一是NOTSelectedItem設置爲null。我這樣做,因爲如果我不這樣做,我回到我的列表視圖,我不能選擇相同的項目。

你會認爲Xamarin在列表視圖HighlightCellSelection上有一個屬性,我可以將其設置爲false。任何人都可以解決這個問題?

這裏是我的代碼:

ListView.ItemSelected += (s, e) => 
       { 
        ((ListView)s).BackgroundColor = App.IsDarkThemeEnabled() ? Xamarin.Forms.Color.Black : Xamarin.Forms.Color.White; 
        XamarinMobile.ViewModels.GridCellViewModel cell = (XamarinMobile.ViewModels.GridCellViewModel)e.SelectedItem; 
        ((ListView)s).SelectedItem = null; 
       } 
我結合上下文,它做同樣的事情

另外:

this.Tapped += (s, e) => { 
     this.View.BackgroundColor = App.IsDarkThemeEnabled() ? Xamarin.Forms.Color.Black : Xamarin.Forms.Color.White; 
    }; 

回答

0

基本上發生了什麼事情是該屬性沒有得到設置,如果我把它設置爲我以前所做的一樣。通過簡單地將其更改爲transparent,然後選擇所需的顏色即可解決問題。

0

我假設這是iOS上,但如果我理解正確你的問題並且您想要執行的操作是禁用默認單元格高亮顯示,則可以創建ViewCellRenderer並更改單元格選擇樣式。

public class ViewCellRenderer : Xamarin.Forms.Platform.iOS.ViewCellRenderer 
{ 
    public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv) 
    { 
     var cell = base.GetCell(item, reusableCell, tv); 
     cell.SelectionStyle = UITableViewCellSelectionStyle.None; 
     cell.BackgroundColor = UIColor.Clear; 
     return cell; 
    } 
}