2014-12-01 47 views
0

我有一個是基於與所述觸發器的風格WPF數據網格未被選擇的行出現:數據網格作爲選擇

<Style TargetType="DataGridCell" x:Key="DataGridCellStyle"> 
    <Style.Triggers> 
     <Trigger Property="IsSelected" 
        Value="True"> 
      <Setter Property="Background" Value="Blue" /> 
      <Setter Property="BorderBrush" Value="Blue" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

問題的簡短說明:在一種情況下,之後,改變該選擇,預覽沒有選中的行仍然標記爲藍色,並顯示爲選中狀態。

而且更詳細: 當我選擇X行時,X行用藍色着色。 當我選擇不同的行時,X行中的顏色會改變爲默認值。

不包括一個案例: 1.我站在X行,它被選中。 2.我換了Y行(從代碼)的地方。 3.交換後,現在仍然選擇X行。 4.我要去不同的行,新的行被選中,行X不再被選中,但它的背景仍然是藍色。

我不知道它可以添加任何額外的信息,但我加入交換的代碼的相關部分: * _commands被綁定到DataGrid

  Command tmp = _commands[indx1]; 
     _commands[indx1] = _commands[indx2]; 
     _commands[indx2] = tmp; 
     Commands[indx + 1].IsSelected = true; 
     Commands[indx].IsSelected = false; 


     private ObservableCollection<CustomCommand> _commands = new ObservableCollection<CustomCommand>(); 
    public ObservableCollection<CustomCommand> Commands 
    { 
     get 
     { 
      return _commands; 
     } 
     set 
     { 
      _commands = value; 
      NotifyPropertyChanged("Commands"); 
     } 
    } 

的的ItemsSource還有一件事 - 這隻發生在一些計算機上,其他計算機上的行爲與預期相同,並且顏色設置爲默認值。

謝謝, Dana。

回答

0

我發現該溶液中,我已經添加相反的觸發當IsSelected =假:

      <Trigger Property="IsSelected" Value="True"> 
           <Setter Property="Background" Value="Blue" /> 
           <Setter Property="BorderBrush" Value="Blue" /> 
          </Trigger> 
          <Trigger Property="IsSelected" Value="False"> 
           <Setter Property="Background" Value="Transparent" /> 
           <Setter Property="BorderBrush" Value="Transparent" /> 
          </Trigger>