2014-11-04 112 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