2013-07-26 3 views
0

У меня есть ObservableCollection (Очки), привязанные к DataGrid. Я не знаю, если это не нормально, но изменения, которые я делаю, редактируя ячейки (мои точки), фактически не меняют мою коллекцию, а просто вид.DataGrid edit не меняет фактического источника

<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 - это событие, которое отправляет сообщение, чтобы что-то обновить с использованием этой коллекции.

+0

Вы получаете какие-либо ошибки привязки в окне вывода – Sivakumar

+0

Вы пытались '{Binding ... UpdateSourceTrigger = PropertyChanged}'? – dkozl

+0

Да, я пробовал это, и это было то же самое – Sturm

ответ

0

Необходимо установить привязку UpadateSourceTrigge = PropertyChanged.

Это используется всякий раз, когда вам нужно отправить изменения из View к ViewModel .Как в этом случае вы редактируете свою коллекцию в представлении и хотите, чтобы отразить обратно в коллекции Вы должны использовать UpdateSourceTrigger Недвижимость.

+0

Спасибо, но я уже пробовал это и никакого результата. Я думаю, проблема может заключаться в том, что я привязываюсь к ObservableCollection точки «Struct», и вы не можете изменить Struct, пожалуйста, исправьте меня, если я ошибаюсь. спасибо – Sturm

0

Это потому, что Point является struct, что означает, что когда вы связываете ItemsSource, управление будет перечислять вашу коллекцию источника для создания Items, который для struct, и любой другой тип значения, значит создать копию. Короче говоря, DataGrid меняет Point вещь, но только ее собственная копия.

Смежные вопросы