2011-08-05 10 views
1

想知道如何突出顯示一個gridview行,如果一些對象的值比另一個大? (考慮gridview綁定到一個observablecollection)如何突出顯示一個gridview行,如果一些對象的值比另一個大?

謝謝。

+0

最簡單的模型來完成。您的物品級別類應包含一個屬性,該屬性存儲您正在進行的任何比較的結果,然後根據此結果使用轉換器並更改物品行的背景。 –

回答

2

您將需要實現一個轉換器做>的比較,但這種展示的一大亮點

 <ListView.ItemContainerStyle> 
      <Style TargetType="ListViewItem"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding Path=IsParent}" Value="True"> 
         <Setter Property="Background" Value="Gainsboro" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </ListView.ItemContainerStyle> 
4

把一個屬性的類您觀察到的集合中的項目,將被置爲真/假基於的在比較你需要。然後,您應該能夠綁定到DataGrid的ItemContainerStyle上的樣式的DataTrigger中的此屬性。

嘗試......

<DataGrid ItemsSource="{Binding YourObservableCollection}" > 
     <DataGrid.ItemContainerStyle> 
      <Style> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding YourShouldHighlightProperty}" Value="True"> 
         <Setter Property="Control.Background" Value="Red"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </DataGrid.ItemContainerStyle> 
    </DataGrid> 
+0

問題是「gridview」不是DataGrid。我不認爲與gridview兼容。 – Paparazzi

0

使用以下code.It wored我。

private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e) 
     { 
      try 
      { 
       foreach (loadtodatagrid item in gridview.ItemsSource) 
       { 
        var row = gridview.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow; 
        if (item.item1== item.item2) 
        { 
         row.Background = new SolidColorBrush(Colors.Yellow); 
        } 
        else 
        { 
         // row.Background = new SolidColorBrush(Colors.Green); 
        } 
       } 
      } 
      catch(Exception ep) 
      { 
       //do nothing.... 
      } 

LoadingRow = 「DataGrid_LoadingRow」 以數據網格在WPF

相關問題