Rac*_*hel 6 wpf datagrid editing
我有一个带有AutoGenerated列的WPF 4.0 DataGrid.我想只允许用户编辑第一列.有这么简单的方法吗?
我试图添加一个DataGridCell样式并根据ColumnName(第一列总是具有相同的名称)或ColumnIndex设置它的编辑能力,但是我无法为此找出正确的XAML,或者即使它是可能的.
BMG*_*BMG 16
以下示例为一个或多个列提供了技巧
private void Grid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.Column.Header.ToString() == "COLUMNNAME")
{
// e.Cancel = true; // For not to include
// e.Column.IsReadOnly = true; // Makes the column as read only
}
}
Run Code Online (Sandbox Code Playgroud)
每列都有一个IsReadOnly属性.此外,整个DataGrid也具有IsReadOnly [这不会影响绑定,只会影响用户编辑字段的能力]
编辑:匆匆回答,抱歉.我只能猜测你不应该在可能的情况下自动生成列,这样你就可以控制哪些是只读的,哪个控制模板去哪里...只需使用列的Binding属性,这样你就不需要自动生成它们了.
我明白了......这就是我用过的东西:
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="IsEnabled" Value="False" />
<Style.Triggers>
<DataTrigger Value="PART_IsSelected" Binding="{Binding Path=Column.Header, RelativeSource={RelativeSource Self}}">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
Run Code Online (Sandbox Code Playgroud)
如果需要,可以使用Column.DisplayIndex而不是Column.Header
我仍然不确定为什么绑定不能直接工作并且需要被RelativeSource引用,但至少它可以工作:)