2013-12-20 60 views
0

我在WPF中有一個DataGrid,它的SelectedIndex字段綁定到我的viewmodel中的相應屬性。當窗口打開時,與未選中的行相比,我可以看到所選行隱隱地顯示爲灰色。如果用戶單擊該行,它將變爲藍色陰影。爲什麼有兩種不同類型的DataGridRow突出顯示顏色,爲什麼我無法控制它們?

的原因,這是一個問題,因爲它似乎我只能設置已經通過,高亮用戶點擊行的背景顏色,而不是由選定的索引程序改變。我曾嘗試風格以下類型的,但行的,他們只是效果背景顏色點擊,而不是那些由SelectedIndex的設置:

例1:

  <DataGrid.RowStyle> 
       <Style TargetType="{x:Type DataGridRow}" > 
        <Style.Triggers> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter Property="Background" Value="Blue" /> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </DataGrid.RowStyle> 

例2:

  <DataGrid.RowStyle> 
       <Style TargetType="{x:Type DataGridRow}" > 
        <Style.Resources> 
         <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Blue" /> 
         <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" /> 
         <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" /> 
         <SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Black" /> 
        </Style.Resources> 
       </Style> 
      </DataGrid.RowStyle> 

所以,如何設置選定的索引hightlight顏色?因爲我的下一步是忽略用戶點擊。無論如何,這兩種類型的行選擇之間有什麼區別,用戶點擊的類型以及以編程方式設置selectedindex的類型?

回答

0

有兩種樣式選擇,因爲該選擇可以是活性的或非活性(當element.IsFocused == false)。

試試這個:

<DataGrid.RowStyle> 
     <Style TargetType="{x:Type DataGridRow}" > 
      <Style.Triggers> 
       <Trigger Property="IsSelected" Value="True"> 
        <Setter Property="Background" Value="Blue" /> 
       </Trigger> 
       <MultiTrigger> 
        <MultiTrigger.Conditions> 
         <Condition Property="IsFocused" Value="False"/> 
         <Condition Property="IsSelected" Value="True"/> 
        </MultiTrigger.Conditions> 
        <Setter Property="Background" Value="Blue"/> 
       </MultiTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.RowStyle> 

然而,由於視覺區別是有原因的,我會建議,而不是尋找到how focus works in WPF。例如,當您最初顯示或更改其選擇時,您可能需要關注網格。

1

解決方案

//C#, WPF 
dataGridInstance.Focus();  //make sure DataGrid is focused 
dataGridInstance.SelectAll(); //select a row programmatically 

這是我用來搜索這個解決方案最初的問題:

  • 爲什麼在 灰色的亮點,而不是藍色的編程選擇在WPF DataGrid的成績排?
  • 爲什麼通過代碼 在WPF DataGrid中選擇行會突出顯示與鼠標單擊相比的不同?
相關問題