gpt4 book ai didi

wpf - WPF的DataGrid验证中的问题-MVVM

转载 作者:行者123 更新时间:2023-12-03 10:40:32 24 4
gpt4 key购买 nike

场景:我的 View 中有一个DataGrid(只有1列)。我已经在XAML的DataGrid上应用了RowValidationRule。每当用户将DataGridCell留为空白时,我的验证规则都会引发错误,并且用户可以看到行周围的红色边框和解释错误的工具提示。在用户修复此当前无效的单元格之前,DataGrid的默认行为不允许用户更改任何其他单元格。但是,如果用户单击“无效单元格”并按Escape键,则红色错误消息消失,用户可以更改任何其他记录。退出键的作用是将最后一个有效值放入单元格中。

我正在使用此XAML创建列

 <DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Type, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>

<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Type, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

问题:当用户在无效的单元格上按Escape键时,该单元格将变为有效(使用先前的值),但是直到用户单击先前无效的单元格(即,直到单元格样式更改为“文本框”),先前的值才会出现。换句话说,如果用户按下Escape键并恢复之前的值,则TextBlock将永远不会显示先前的值,直到用户再次单击该单元格并尝试编辑该值为止。

那么有什么方法可以让我在不先进入文本框模式的情况下强制Textblock在按下转义键后显示该值?

如果上述操作是不可能的,是否有任何办法可以阻止Escape键的行为?因此,在修复无效行之前,用户无法编辑其他任何行。

最佳答案

我将UpdateSourceTrigger更改为显式,从而解决了该问题

     <DataTemplate>
<TextBox Text="{Binding Type, UpdateSourceTrigger=Explicit}"/>
</DataTemplate>

关于wpf - WPF的DataGrid验证中的问题-MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4735326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com