2010-10-06 48 views
0

我一直在使用WPF进行安静。我知道WPF中的DataGrid没有Column集合作为依赖属性,所以不能动态添加列。WPF Datagrid Template列编辑事件和交替列颜色

我正在开发的应用程序是高度动态的,因此列数是未知的。所以我从后面的代码创建DataGridTemplate列。

问题1:我希望交替列具有不同的背景颜色。我该如何编程? (DataGridTemplateColumn多年平均值有一个背景属性,所以我不能够想出一个解决方案)

问题2:我DataGridTemplateColumn有一个DataTemplate中,我有一个StackPanel在它2个文本框。 DataGrid中有一个名为CellEditing Event的事件,它在我们编辑单元格时触发。它适用于默认列,但对于我的列如果我编辑这些文本框,事件是鼻涕被解雇!那么我该如何实现呢?

(我有时会通过WPF !!!惊讶)

回答

2

问题零可以有列为您生成,如果你使用AutoGenerateColumns="true"当您设置的DataGrid DataGrid中。它不会稍后动态添加列,但是如果您重置itemssource,它可能会发生? (在那一个不为正)

问题一个数据网格具有属性AlternatingRowBackgroundAlternationCount设置交替背景。但是我没有看到网格中交替列背景的任何东西。你可以做你的DataTemplate里,虽然:

<DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <TextBlock Background="Red" Foreground="White">I'm Red</TextBlock> 
    </DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 

但我还是看到里面的余量,即使利润率= 0,所以如果你使用任何真正明显的颜色的细胞看起来很有趣。

问题二你的意思是CellEndEditing事件?因为我没有看到任何其他单元格编辑事件。我试过如下:

<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False" CellEditEnding="DataGrid_CellEditEnding"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="A" Binding="{Binding Field0}" /> 
      <DataGridTemplateColumn Header="BC"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding Field1}"/> 
          <TextBlock Text="{Binding Field2}" /> 
         </StackPanel> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
       <DataGridTemplateColumn.CellEditingTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal"> 
          <TextBox Text="{Binding Field1}"/> 
          <TextBox Text="{Binding Field2}" /> 
         </StackPanel> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellEditingTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

每当无论是在CellEditingTemplate失去焦点文本框,是否改变或没有数据我DataGrid_CellEditEnding事件处理函数被调用,这样的事情似乎是为我工作。

您是否使用其他DataGrid而不是“内置”WPF?

+0

问题2对我来说是非常重要的优先事项..我必须解决它的客户需求..请让我知道如果你找到某种设置列颜色的方式! – GuruC 2010-10-07 04:27:15

+0

我的DataTemplate包含一个ComboBox实例对于CellTemplate和CellEditingTemplate,其中UpdateSourceTrigger为propertyChanged,但事件不会引发任何关于此的想法? – 2014-05-19 12:15:31