C# 使用CellTemplate和CellEditingTemplate时冻结WPF数据网格中的行
我有一个数据网格,有五列:名字、姓氏、用户、密码和角色。我只使用了带有密码和角色的CellTemplate和CellEditingTemplate。问题是,在我对属于名为Password或Role的列之一的单元格进入编辑模式后,除了包含相应单元格的行之外,我无法对其他行进入编辑模式。 我不知道该怎么办了,我已经失去了两天了 这是我的密码:C# 使用CellTemplate和CellEditingTemplate时冻结WPF数据网格中的行,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个数据网格,有五列:名字、姓氏、用户、密码和角色。我只使用了带有密码和角色的CellTemplate和CellEditingTemplate。问题是,在我对属于名为Password或Role的列之一的单元格进入编辑模式后,除了包含相应单元格的行之外,我无法对其他行进入编辑模式。 我不知道该怎么办了,我已经失去了两天了 这是我的密码: <DataGrid ItemsSource="{Binding Elements}" AutoGenerateColumns
<DataGrid ItemsSource="{Binding Elements}"
AutoGenerateColumns="False"
CanUserAddRows="True"
CanUserDeleteRows="True"
IsReadOnly="False"
Style="{StaticResource DataGridStyle}"
CellStyle="{StaticResource LeftCellStyle}"
RowHeight="30">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment"
Value="Center" />
</Style>
</DataGrid.Resources>
<DataGrid.RowValidationRules>
<continut:UtilizatorRowValidationRule ValidationStep="UpdatedValue"></continut:UtilizatorRowValidationRule>
</DataGrid.RowValidationRules>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsSelected"
Value="True">
<Setter Property="Background"
Value="CornflowerBlue" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<!--First Name-->
<DataGridTemplateColumn Width="*"
Header="FirstNume"
CellStyle="{StaticResource LeftCellStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding FirstName}"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--Last Name-->
<DataGridTemplateColumn Width="*"
Header="LastName"
CellStyle="{StaticResource LeftCellStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding LastName}"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--User-->
<DataGridTemplateColumn Width="*"
Header="User"
CellStyle="{StaticResource LeftCellStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding UserName}"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--Password-->
<DataGridTemplateColumn Width="*"
Header="Password"
CellStyle="{StaticResource CenterCellStyle}">
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment"
Value="Center" />
</Style>
</DataGridTemplateColumn.HeaderStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="Click here to modify."></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<PasswordBox Name="PasswordBoxPass"
PasswordChanged="PasswordBoxPass_PasswordChanged"
Width="300"
Height="25" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<!--Role-->
<DataGridTemplateColumn Header="Role"
Width="*"
CellStyle="{StaticResource CenterCellStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="Select the role."></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Grid.Row="2"
Grid.Column="2"
IsEditable="False"
ItemsSource="{Binding DataContext.RoleVM, RelativeSource={RelativeSource AncestorType=DataGrid}}"
SelectedItem="{Binding ChosenRole, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Height="25">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Description}"
Width="300"
VerticalAlignment="Center" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
我应用的某些样式可能会导致这种行为吗?您确定可以编辑它们吗?因为我看到您为他们提供了
CellTemplate
,但是没有CellEditTemplate
。另外,如果只使用普通的TextBlock
元素,那么只使用DataGridTextColumn
就更容易了。我使用CellEditingTemplate仅用于密码和角色。这可能是个问题吗?我认为您的问题来自您使用的行验证规则。我刚刚偶然发现了一个与您的问题非常相似的问题:当我编辑一个有验证错误的行的单元格时,所有其他行都会被“锁定”,我无法再编辑它们,直到我修复了我最初编辑的行上的验证错误。仅供参考,您似乎可以通过在正在编辑的单元格上按Esc键一次或两次来清除验证,从而重新启用其他行的编辑,但在我的情况下,我希望保留验证错误,同时仍然能够修改其他行。但还没有解决方案。与我所说的相关的问题:以及