我有一个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>
答案 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