2013-09-03 3 views
0

텍스트 상자가 있고 명령에 입력 한 텍스트를 전달하고 싶습니다. 나는 follwong을 수행KeyTrigger passing parameters

XAML : 명령에

<TextBox Margin="0" Grid.Row="2" TextWrapping="Wrap" > 
      <i:Interaction.Triggers> 
       <iex:KeyTrigger Key="Enter"> 
        <i:InvokeCommandAction Command="{Binding TextBoxMessageCommand}" CommandParameter="{Binding Path=Text, RelativeSource={RelativeSource Self}}"/> 
       </iex:KeyTrigger> 
      </i:Interaction.Triggers> 
     </TextBox> 

코드 :

public override void Execute(object parameter) 
    { 
     string msg = parameter; 

괜찮아요. 메소드 Execute는 적절하고 훌륭하게 실행됩니다. 그러나 매개 변수 == null. 여기에 무슨 문제가 있습니까?

답변

1

TextBox에 이름을 지정하고 명령에서이 이름을 통해 참조해야합니다. 자기는 명령 내에서 작동하지 않습니다.

<TextBox x:Name="textBox" Margin="0" Grid.Row="2" TextWrapping="Wrap" > 
     <i:Interaction.Triggers> 
      <iex:KeyTrigger Key="Enter"> 
       <i:InvokeCommandAction Command="{Binding TextBoxMessageCommand}" CommandParameter="{Binding Path=Text, ElementName=textbox}"/> 
      </iex:KeyTrigger> 
     </i:Interaction.Triggers> 
</TextBox> 
+0

이 것은 잘 작동합니다. 또 다른 방법이 존재할 수 있습니다. 내 말은 .. 좀 더 우아한 .. – alerya

+0

명령 발사 후 채팅 텍스트를 지우는 방법은 무엇입니까? – alerya

+1

'CommandParameter = "{Binding ElementName = textbox}"'아마도'TextBox'에 매개 변수를 캐스팅하고'Text' 속성을 사용하거나 지울 수 있습니다. – Benlitz