0

我的 DataGrid 中有这个 goto 功能。这个功能我想远离我的 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 传递文本,我可以做一些绑定吗?我怎么能做到这一点?

4

1 回答 1

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>

于 2014-04-14T13:56:22.240 回答