DataGrid编辑不会更改实际源

时间:2013-07-26 11:37:24

标签: c# wpf observablecollection

我有ObservableCollection(点数)绑定到DataGrid。我不知道这是不正常的,但是我编辑单元格(我的观点)所做的更改实际上并没有改变我的集合,只是改变了视图。

<DataGrid x:Name="s1Grid" ItemsSource="{Binding s1Puntos, Mode=TwoWay}"
                          AutoGenerateColumns="False" Width="165" 
                          Background="#19B0C4DE" BorderThickness="1"
                          BorderBrush="#19D3D3D3" CanUserResizeColumns="False" 
                          CanUserResizeRows="False" CanUserSortColumns="False" 
                          ClipboardCopyMode="IncludeHeader" CellEditEnding="s1Grid_CellEditEnding">

    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Path=X, StringFormat='{}    {0:#.00}', Mode=TwoWay}"  Header="X" Width="*"/>
        <DataGridTextColumn Binding="{Binding Path=Y, StringFormat='{}    {0:#.00}', Mode=TwoWay}" Header="Y" Width="*" />
    </DataGrid.Columns>    
</DataGrid>

你看错了吗?

注意:s1Grid_CellEditEnding是一个事件,它使用该集合发送消息以更新内容。

2 个答案:

答案 0 :(得分:0)

您需要设置Binding UpadateSourceTrigge = PropertyChanged

只要您需要将更改从查看发送到 ViewModel ,就会使用此功能。在这种情况下,您正在视图中编辑您的收藏并希望反映回来进入集合您需要使用 UpdateSourceTrigger 属性。

答案 1 :(得分:0)

这是因为Pointstruct,这意味着当您绑定ItemsSource时,控件将枚举您的源集合以创建Itemsstruct,和任何其他值类型,意味着创建一个副本。长话短说,DataGrid正在更改Point项,但只有它自己的副本。