3

いくつかの InputBindings を持つ UserControl があります。入力バインディングの 1 つ (矢印キーを押す) で、 UserControl の GUI コントロールでコマンドを実行したいと考えていました。そう

例えば

<UserControl.InputBindings>
    <KeyBinding Key="Up" Command="{Binding ElementName=MyViewElement, Path=MoveUpCommand}"/>
    <KeyBinding Key="Down" Command="{Binding ElementName=MyViewElement, Path=MoveDownCommand}"/>
</UserControl.InputBindings>

ただし、後で XAML で宣言されていると想定しているため、MyViewElement が見つからないため、これは失敗します。InputBindings を XAML ファイルの末尾に移動すると、すべてが意図したとおりに機能します。

私は InputBindings を一番上にしたいのですが、宣言の順序を無視することはできますか?

4

3 に答える 3

1

@Stewbob何について話しているのですか?

これを見てください:http://msdn.microsoft.com/en-us/library/ms752308.aspx

<Window.CommandBindings>
  <CommandBinding Command="ApplicationCommands.Open"
                  Executed="OpenCmdExecuted"
                  CanExecute="OpenCmdCanExecute"/>
</Window.CommandBindings>

あなたが言ったことによると、これは決して適切に機能するべきではありませんが、機能します:

<StackPanel>
  <Menu>
    <MenuItem Command="ApplicationCommands.Paste"
              CommandTarget="{Binding ElementName=mainTextBox}" />
  </Menu>
  <TextBox Name="mainTextBox"/>
</StackPanel>

あなたが言ったことから、バインディングも最初に実行されるため、mainTextBoxへのバインディングは決して機能しません。それは非常に真実ではありません。

于 2013-03-02T07:21:20.977 に答える
0

確かに、ウィンドウレベルでのバインディングを含め、XAMLですべてを実行できます。XAML/MyViewElementのコードをさらに表示します。たぶん、エラーなしでそれを行う方法を教えてくれるでしょう。また、ここにエラーを投稿してください。

于 2013-03-01T21:12:30.177 に答える