2014-11-04 142 views
0

我知道這個問題被問了很多,但我只在XAML代碼文件中看到它。
我在DataGrid擴展上工作,所以我在C#代碼文件中,我想知道如何刪除選定行的默認樣式(在我的情況下,我不想在樣式中進行任何更改,我在行中有一個圖像標題顯示哪個行被選中)。刪除所選行的默認樣式

側面的問題,我們可以選擇像「Ctrl」被按下,如何在C#代碼?

感謝

編輯

我試試這個代碼:

Style oRow = new Style(typeof(DataGridRow)); 
DataTrigger oTrigger2 = new DataTrigger(); 
Binding oBind = new Binding(); 
oBind.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(DataGridRow), 1); 
oBind.Path = new PropertyPath(DataGridRow.IsSelectedProperty); 
oTrigger2.Binding = oBind; 
oTrigger2.Value = true; 
oTrigger2.Setters.Add(new Setter(DataGridRow.BackgroundProperty, Brushes.Khaki)); 
oRow.Triggers.Add(oTrigger2); 
this.RowStyle = oRow; 

現在,我tryed把選擇的背景卡其色測試。但我得到了舊的藍色亮點。

編輯2

上Sinatr的思想基礎,我改變DatagridRow爲DatagridCell和止帶:

Style oRow = new Style(typeof(DataGridCell)); 
DataTrigger oTrigger2 = new DataTrigger(); 
Binding oBind = new Binding(); 
oBind.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(DataGridRow), 1); 
oBind.Path = new PropertyPath(DataGridRow.IsSelectedProperty); 
oTrigger2.Binding = oBind; 
oTrigger2.Value = true; 
oTrigger2.Setters.Add(new Setter(DataGridCell.BackgroundProperty, null)); 
oTrigger2.Setters.Add(new Setter(DataGridCell.BorderBrushProperty, null)); 
oRow.Triggers.Add(oTrigger2); 
this.RowStyle = oRow; 

我只需要得到該行設置前景的前景的細胞。但我有一個新的問題,解決方案,可以將背景設置爲空或我應該將其綁定到thr行背景?

+0

我認爲你必須rest' DataGrid.RowStyle'。不要爲'Selector.IsSelected'添加任何觸發器,那麼所有行的外觀應該是相同的。 – Sinatr 2014-11-04 14:26:45

+0

我在做Edit之前嘗試,它不起作用。那就是爲什麼我嘗試改變卡其色的顏色 – Northik 2014-11-05 14:16:36

回答

0

您必須更換CellStyle控制模板。

向實施例,此模板

<DataGrid x:Name="dataGrid"> 
    <DataGrid.CellStyle> 
     <Style TargetType="DataGridCell"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="DataGridCell"> 
         <TextBlock Text="1" Background="Khaki" Foreground="Red"/> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </DataGrid.CellStyle> 
</DataGrid> 

將產生的輸出(對僅有1 Tuple<string, string, string>,等等):

它保持對選定的或不選擇的相同項目。

顯然你必須更正確地實施它,但給出的答案應該給你一個想法。

+0

謝謝,根據你的soltution我編輯我的問題。我沒有標記爲已解決,因爲我對我的解決方案有了另一個疑問。希望有人能回答我。 – Northik 2014-11-05 15:18:39

+0

*有人*然後將幫助。 – Sinatr 2014-11-05 15:24:26