2017-02-23 9 views
0

私はこれを行うための無数の方法を見てきました - それらはすべて多かれ少なかれ同じように見えます。しかし、私はこれをまったく動作させることはできません。WPF - コマンドを実行するためにテキストボックスに入力する

<TextBox x:Name="Assetbox" Text="{UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Center" Width="120" VerticalContentAlignment="Center" Grid.Column="2" Grid.ColumnSpan="3"> 
    <TextBox.InputBindings> 
     <KeyBinding Key="Return" Command="{Binding IPfind, Mode=OneWay}"/> 
    </TextBox.InputBindings> 
</TextBox> 

これは私が見たいくつかのもののアマルガムであり、壁に当たって助けを求めることを決めたところです。どうか私はここで何をねじれているのですか?

pushing enterは何もしません。IPfindコマンドはボタンクリックから実行するとうまく動作しますが、避けたいのですが。どんな支援も大歓迎です。

+0

のためのキーバインドを探すために、私の命令に文がある場合に追加しました私のために働く、愚かな質問:Returnキーを押すと、テキストボックスにフォーカスがありますか? – JSteward

+0

正直言って、まったくばかげているわけではありません - 私はこれで新しいですが、それに "集中している"ということはありません...そうでしょうか?それが動作するはずのやり方は、私はテキストボックスにホスト名を入力し、 "ボタンを押す"は、IPを別のテキストボックスに入力します。しかし、ボタンをクリックする代わりに、代わりに「Enter」を押してみたいです。 –

+0

これはうまくいかないオプションがいくつかあります。 'TextBox'はアクティブなコントロールでなければならないので、テキストフィールドに点滅しているキャレットが表示されるはずです。 'TextBox'は' ICommand'を持っているビューモデルに 'DataContext'を設定する必要があります。これは通常継承されますが、より多くの問題がある場合は、完全なxamlとviewmodelがトラブルシューティングに役立ちます。 – JSteward

答えて

0

はすべて間違ってそれについてつもりだった、私は、テキストボックスのプロパティを変更:

<TextBox x:Name="Assetbox" KeyDown="IPfind" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Center" Width="120" VerticalContentAlignment="Center" Grid.Column="2" Grid.ColumnSpan="3"/> 

とキーを押す

private void IPfind(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Enter) 
    { 
関連する問題