2012-02-18 145 views
0

我試圖做到這一點:當用戶在DataGrid中選擇一個或多個單元格時,所有重複項目的背景顏色都應該更改爲根據選擇和值更改WPF DataGrid單元格的背景顏色

我有這樣的XAML

<Window x:Class="NotesOnFretboard.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <DataGrid ItemsSource="{Binding}" AutoGenerateColumns="true" Margin="12,110,12,29" Name="dataGrid1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" IsReadOnly="True" /> 
    </Grid> 
</Window> 

後面的代碼:

public MainWindow() 
{ 
    InitializeComponent(); 
    DataTable dt = CreateDataTable(); 

    dataGrid1.ItemsSource = dt.DefaultView; 
} 

所以我用填充一個DataTable(10行,25列)的數據網格。 在這個數據表中有一些重複的值。

當用戶選擇DataGrid中的一個或多個單元格時,所有重複項的背景顏色都應該改變!

請幫忙!

//安德斯

+0

你有什麼結合?什麼是數據結構?這可能更容易反映在數據結構中。 – 2012-02-18 01:05:18

+0

數據結構是一個ObservablCollection >。其中Note是一個類Note {public string Name {get;組; } public int Octave {get;組; } public int Midi {get;組; }}但是由於我沒有找到任何方式顯示DataGrid中的列表,我使用Name屬性創建了一個DataTable。重複將在Midi屬性 – Andis59 2012-02-18 07:07:57

回答

1

你可以改變你的集合類,以便它有一個屬性,指出它是否應該被強調或者不是,然後將該屬性(通過轉換器)綁定到要更改顏色的元素屬性。 您可以響應選擇/點擊並根據您希望的任何標準將您的ItemSource的'selected'屬性更改爲true/false。

因此,像:

<sdk:DataGrid x:Name="NoteList" 
    AutoGenerateColumns="False" 
    GridLinesVisibility="None" 
    HeadersVisibility="None" 
    IsReadOnly="True" 
    ItemsSource="{Binding NoteList,Mode=OneWay}"> 
    <sdk:DataGrid.Columns> 
     <sdk:DataGridTemplateColumn Width="Auto"> 
      <sdk:DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <TextBox Text="{Binding NoteDescription, Mode=OneWay}" 
          Background="{Binding NoteHighlighted, 
           Converter={StaticResource BooleanToColourConverter}}"/> 
       </DataTemplate> 
      </sdk:DataGridTemplateColumn.CellTemplate> 
     </sdk:DataGridTemplateColumn> 
    </sdk:DataGrid.Columns> 
</sdk:DataGrid> 
相關問題