This looks great to me! Other than some possible minor readability fixups, this is What You Should Do™. Here's a slightly cleaner version:
Router.CurrentViewModel
.Select(x => {
var haveCmds = x as IHaveCommands;
return haveCmds != null ? haveCmds.Commands : null;
})
.ToProperty(this, x => x.Commands, out _toolbarCommands);