WPF DataGrid在仍然能够添加时禁用行

时间:2014-04-16 09:39:42

标签: c# wpf xaml

我有一个WDF Datagrid,当从数据库返回一行时,我想阻止用户编辑该行,但是,我仍然希望用户能够添加新行并编辑尚未行的行保存到数据库了。

有没有办法可以做到这一点?

我查看了isReadOnly属性,但是将其指定为true,显然会禁用所有行,并会阻止用户添加更多行!

由于

XAML代码

    <DataGrid HorizontalAlignment="Left" AutoGenerateColumns="False"
              CanUserAddRows="True" 
              Name="dace"
              ItemsSource="{Binding Collection, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
              CanUserDeleteRows="True" 
              Height="183" 
              Margin="45,115,0,0" 
              VerticalAlignment="Top" 
              SelectedItem="{Binding CollectionItem, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
              Width="530"
              InitializingNewItem="DataGrid_InitializingNewItem" Grid.ColumnSpan="2">

        <DataGrid.Columns> 

2 个答案:

答案 0 :(得分:1)

您可以设置自定义RowStyle:

            <DataGrid>
                <DataGrid.RowStyle>
                    <Style TargetType="DataGridRow">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsEdited}" Value="True">
                                <Setter Property="IsEnabled" Value="False"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </DataGrid.RowStyle>
            </DataGrid>

显然,你需要创建一个&#34;框架&#34; class,与您的真实类如内容和布尔值&#34; IsEdited&#34;在开始时设置为false,在编辑行后设置为true。

答案 1 :(得分:0)

我也有类似的问题。对我来说,解决方案是取消所有不希望有的行的编辑。 streaming-s3

CSV