2014-04-14 14 views
0

DataGrid에서이 goto 기능을 사용하고 있습니다. 이 기능은 내 ViewModel과 코드 숨김에서 제외하고 싶기 때문에 다음 첨부 파일은 완벽 할 수 있습니다.TargetedTriggerAction에 매개 변수를 전달하는 방법

사용자가 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

돈에 이 문제가 해결되었는지 알지 못하지만 'object Parameter {get; set;}'그리고 당신의'Invoke'에서 그것을 사용합니까? – XAMlMAX

+0

@ XAMlMAX 아직 해결되지 않았습니다. XAML에서 매개 변수를 추가하는 방법을 포함하여 답변에서이를 확장 할 수 있습니까? – Hank

+0

신경 쓰지 마시고, 답안을 추가하십시오. – Hank

답변

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>