Как передать параметр в TargetedTriggerAction

У меня есть эта функциональность goto в моей DataGrid. Эту функциональность я хотел бы исключить из моей ViewModel и из-за кода, поэтому следующее вложение может быть идеальным, однако...

Пользователь вводит номер строки (элемента), затем, когда пользователь нажимает кнопку GotoButton, он отображает элемент.

<Grid>
    <TextBox x:Name="GotoTextbox"  Text="{Binding GotoLineNumber, UpdateSourceTrigger=PropertyChanged}" />
    <Button Name="GotoButton" >
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="Click">
                <helpers:TargetedTriggerActionGotoButton TargetObject="{Binding ElementName=GenericDataGrid}"  />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </Button>
</Grid>

Вот класс TargetedTriggerAction.

public class TargetedTriggerActionGotoButton : TargetedTriggerAction<DataGrid>
{
    protected override void Invoke(object parameter)
    {
        this.Target.SelectedGridItem = GotoLineNumber - 1;
        this.Target.SelectedGridIndex = GotoLineNumber.GetValueOrDefault() - 1;
    }
}

Я хотел бы как-то передать текст из GotoTextbox, есть ли какое-нибудь связывание, которое я могу сделать? Как я мог этого добиться?

1 ответ

Решение

Как мы говорили в комментариях
чтобы разрешить передачу параметров, необходимо реализовать дополнительное свойство в вашем TargetedTriggerAction

public class TargetedTriggerActionGotoButton : TargetedTriggerAction<DataGrid>
{
    protected override void Invoke()
    {
        this.Target.SelectedGridItem = GotoLineNumber - 1;
        this.Target.SelectedGridIndex = GotoLineNumber.GetValueOrDefault() - 1;
    }
    //property used as parameter
    public object Parameter {get;set;}
}

а затем в вашем xaml

<Grid>
<TextBox x:Name="GotoTextbox"  Text="{Binding GotoLineNumber, UpdateSourceTrigger=PropertyChanged}" />
<Button Name="GotoButton" >
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <helpers:TargetedTriggerActionGotoButton TargetObject="{Binding ElementName=GenericDataGrid}" Parameter="{Binding ElementName="/*desiredName*/",Path="/*neededValue*/"}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>

Другие вопросы по тегам