Skip to content

EventToCommand: parameter contains PassEventArgsToCommand flag #78

@FoggyFinder

Description

@FoggyFinder

To retrieve the data that was passed via command parameter one have to use additional steps.

For example:

<fsxaml:EventToCommand Command="{Binding DataContext.SomeMsg, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}" CommandParameter="{Binding SomeProp}" />
<@ vm.SomeMsg @> |> Bind.cmdParam (unbox<obj*bool> >> fst >> string >> Messages.SomeMsg)

because getParameter function looks like:

let getParameter (param : obj) =
    match self.CommandParameter, self.PassEventArgsToCommand with
    | (null, true) -> self.EventArgsConverter.Convert (param :?> EventArgs) self.EventArgsConverterParameter
    | param -> param :> obj 

maybe it will be better to not include self.PassEventArgsToCommand in the second case?
like

let getParameter (param : obj) =
    match self.CommandParameter, self.PassEventArgsToCommand with
    | (null, true) -> self.EventArgsConverter.Convert (param :?> EventArgs) self.EventArgsConverterParameter
    | p, _ -> p 

Then it will be consist with docs:

The paramter passed to the ICommand. If this is set, the EventArgs are ignored

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions