我已经看过并且找不到我要找的东西。我有一个 MVVM 环境。在视图模型上,我有一个可从数据库连接/查询的数据中获得的数据表。我已经将一个属性(getter/setter)公开为基于“TheTable.DefaultView”的“DataView”。
我在窗口中有一个绑定到数据视图的数据网格......没问题。
<DataGrid AutoGenerateColumns="False"
Name="dataMyData"
ItemsSource="{Binding Path=ViewModelViewProperty,
NotifyOnSourceUpdated=True,
NotifyOnTargetUpdated=True}"
SelectedItem="{Binding Path=JustOneRecordInView, Mode=TwoWay}"
SelectionMode="Single"
SelectionUnit="FullRow"
GridLinesVisibility="Horizontal"
CanUserDeleteRows="False"
CanUserAddRows="False" >
对于上面的“SelectedItem”,它也来自通过其(getter/setter)暴露在 ViewModel 上的属性。
现在,我的问题。当我向下滚动数据网格中的记录列表时,我有其他文本框控件来显示比网格列表提供的更多数据。我希望能够编辑“当前行”的数据,所以我有一个文本框,里面有我能想到的尽可能多的设置,但还是有问题。
<TextBox
Text="{Binding Path=PropertyForCurrentRecord[SpecificColumnInDataViewRow],
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True,
ValidatesOnExceptions=True,
BindsDirectlyToSource=True,
NotifyOnSourceUpdated=True,
NotifyOnTargetUpdated=True,
NotifyOnValidationError=True}"
Name="textBox1" VerticalAlignment="Top" Width="40" />
如果我滚动并处于数据的编辑模式,并更改与当前行关联的文本框中的值,并且该值是网格中显示的列之一,则数据网格本身不会显示更改的值. 但是,如果我继续滚动并返回同一条记录,则文本框中的值会显示更改为值。
那么,当特定行中的单个列已更改并且网格本身也已更新时,如何强制将网格数据源也视为已更新。谢谢...