El evento de cambio de casilla de verificación Knockout envía valor antiguo

Estoy teniendo un problema con los nocauts "marcados". Parece que el evento "cambiar" en la casilla de verificación devuelve el valor anterior, antes de que se actualice (por lo tanto, si no se seleccionó, devolverá falso). No creo que pueda suscribirme al valor ya que lo tengo dentro del objeto.

<tbody data-bind="foreach: Categories">
                <tr>
                    <td><input type="checkbox" data-bind="checked: ShowOpened, event: { change: $root.CategoryChange }" /></td>
                </tr>
            </tbody>
<script type="text/javascript">
var Category = function (Id, Name, Order, ShowOpened) {
    this.Id = Id;
    this.Name = Name;
    this.Order = Order;
    this.ShowOpened = ShowOpened;
    this.IsUpdated = ko.observable(false);

    this.OldOrder = Order;
    this.OldShowOpened = ShowOpened;
};
var ViewModel = {
    Categories: ko.observableArray([]),
    CategoryChange: function(pCategory) {
        if(pCategory.Order != pCategory.OldOrder || pCategory.ShowOpened != pCategory.OldShowOpened)
            pCategory.IsUpdated(true);
        else
            pCategory.IsUpdated(false);
    }
};
ko.applyBindings(ViewModel);
</script>

Entonces, en este ejemplo, tengo la casilla de verificación MostrarAbierto que puede activar el método de Cambio de Categoría que cambiará una variable dentro del objeto (que necesito más adelante para saber qué objeto se actualiza). Pero cuando se cambia el chechbox, siempre envía el valor antiguo, el método de activación y luego cambia el valor. ¿Hay alguna forma de arreglar esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta