Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用CellTemplate和CellEditingTemplate时冻结WPF数据网格中的行_C#_Wpf_Datagrid - Fatal编程技术网

C# 使用CellTemplate和CellEditingTemplate时冻结WPF数据网格中的行

C# 使用CellTemplate和CellEditingTemplate时冻结WPF数据网格中的行,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个数据网格,有五列:名字、姓氏、用户、密码和角色。我只使用了带有密码和角色的CellTemplate和CellEditingTemplate。问题是,在我对属于名为Password或Role的列之一的单元格进入编辑模式后,除了包含相应单元格的行之外,我无法对其他行进入编辑模式。 我不知道该怎么办了,我已经失去了两天了 这是我的密码: <DataGrid ItemsSource="{Binding Elements}" AutoGenerateColumns

我有一个数据网格,有五列:名字、姓氏、用户、密码和角色。我只使用了带有密码和角色的CellTemplate和CellEditingTemplate。问题是,在我对属于名为Password或Role的列之一的单元格进入编辑模式后,除了包含相应单元格的行之外,我无法对其他行进入编辑模式。 我不知道该怎么办了,我已经失去了两天了

这是我的密码:

    <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键一次或两次来清除验证,从而重新启用其他行的编辑,但在我的情况下,我希望保留验证错误,同时仍然能够修改其他行。但还没有解决方案。与我所说的相关的问题:以及