2012-09-25 37 views
1

我有多個項目一個GridView(10個項目從列表綁定)。 (例如)讓我有一個文本字段和按鈕。在文本字段中,我將鍵入從0到9的數字。當我單擊一個按鈕時,我想更改在文本字段中鍵入索引的項目的背景。所以,當我輸入0,我想第一個項目改變背景等等等等我有一個全局列表,我可以從該列表中獲取對象,但我不知道如何改變這個項目的背景上的GridView如何更改單個項目的backgrond在GridView的

回答

1

你可以有一個DataTemplate爲那個不同的項目(只改變它的背景)。然後,使用TemplateSelector,可以確定要將該模板僅應用於其編號與綁定到TextBox的編號相匹配的項目。

public class GridViewDataTemplateSelector : DataTemplateSelector 
{ 
    public override DataTemplate 
     SelectTemplate(object item, DependencyObject container) 
    { 
     FrameworkElement element = container as FrameworkElement; 

     if (element != null && item != null && item is GridViewRow) 
     { 
      GridViewRow rowitem = item as GridViewRow; 

      // Here's where you compare with actual selected number (change 1 with the method call to obtain it. 
      if (GridViewRow.RowIndex == 1) 
       return 
        element.FindResource("SpecialBackgroundRowTemplate") as DataTemplate; 
      else 
       return 
        element.FindResource("NormalBackgroundRowTemplate") as DataTemplate; 
     } 

     return null; 
    } 
} 

這裏SpecialBackgroundRowTemplateNormalBackgroundRowTemplate都在這裏設置正常的背景和給定的網格行聚焦背景的DataTemplates。

+0

是的,你可以。一旦用戶更改了文本框的值,綁定的數字就會改變,然後模板選擇器將更改相應所選行的DataTemplate,然後它的背景色將會改變。這是技術上的簡單,但會花一些時間進行編碼。 –

+0

好吧,但如何調用模板選擇器?你能告訴我一些代碼嗎? – Fixus

+0

我的主要問題是如何爲所選項目設置樣式?我實現了模板選擇器,但是我只能使它適用於整個Collection。在View生成後,我不知道如何調用它。 – Fixus

0

可以定義DataGridViewCellStyle對象,並設置其屬性,然後從您的datagridview調用任何細胞 -

DataGridViewCellStyle dgvs = new DataGridViewCellStyle(); 
dgvs.BackColor = Color.Red; 
yourDGV.Rows[0].Cells[0].Style = dgvs; 
+0

有喜歡的背景色沒有財產:(這是我唯一的測試代碼或者是它的工作的例子嗎? – Fixus

+0

確定我得到它:)很遺憾我的糟糕的一天。感謝提示。我會檢查它 – Fixus

+0

我的GridView沒有名爲Rows的屬性 – Fixus

相關問題