我遇到了DataGrid EditRowEnding
事件未触发的问题。
我的DataGrid
有DataGridTemplateColumn
,如果此列的值发生更改且行失去焦点,则不会触发EditRowEnding
事件。我认为这是因为DataGrid
不知道DataGridTemplateColumn
更改中的孩子。
无论如何,我可以告知DataGrid
自定义单元格已更改。
这是我到目前为止的代码:
<DataGrid Grid.Row="2" Name="Users" ItemsSource="{Binding Users, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" SelectedItem="{Binding SelectedUser}"
AutoGenerateColumns="False" IsReadOnly="False" Margin="0,10,0,0"
Style="{StaticResource AlternatingDataGridStyle}" CanUserAddRows="False" CanUserDeleteRows="True"
cal:Message.Attach="[Event RowEditEnding] = [Action ModifyUser($eventArgs)]" SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn Header="Username" Binding="{Binding Username, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTemplateColumn Header="Password">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<PasswordBox customBehaviours:PasswordHelper.Attach="True"
customBehaviours:PasswordHelper.Password="{Binding Password, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Role">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding Role, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding Source={StaticResource UserRoleEnumProvider}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
感谢。