Как передать параметр в 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>