私が望んでいたのは、タブごとに異なるバインドが必要だったので、タブを切り替えるとコマンドの可用性が切り替わりました。CommandBindings はそのように機能すると思いました。
しかし、この単純なサンプルを機能させるために最後の時間を費やしました。私が根本的に誤解している (そしてそれが最初ではない) か、何かが間違っているかのどちらかです。
CommandBinding を textBoxA に追加しますが、textBoxB には追加しません。それらの間を移動すると、対応するコマンドに設定されているボタンが有効または無効になります。
Window に CommandBinding を追加すると、ボタンは問題なく有効になりますが、そのようなものは、アイテム固有の CommandBinding の要点全体を殺します。
この XAML の使用
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="500">
<Canvas>
<Button Canvas.Left="31" Canvas.Top="24" Content="Click Me" Name="button1" Width="100"/>
<TextBox Canvas.Left="155" Canvas.Top="22" Height="23" Name="textBoxA" Width="120" Text="A" />
<TextBox Canvas.Left="298" Canvas.Top="22" Height="23" Name="textBoxB" Width="120" Text="B" />
</Canvas>
</Window>
このコード ビハインドの使用
public MainWindow()
{
InitializeComponent();
button1.Command = ApplicationCommands.Open;
var _Binding = new CommandBinding(button1.Command);
textBoxA.CommandBindings.Add(_Binding);
textBoxB.CommandBindings.Clear(); // nothing bound
_Binding.CanExecute += (s, e) =>
{
e.CanExecute = true;
};
_Binding.Executed += (s, e) =>
{
MessageBox.Show("Hello");
};
}
このコードを試してみると、あるテキストボックスから別のテキストボックスに移動しても、ボタンが無効のままであることがわかります。(ただし、textBoxA はボタンの CommandBinding を実装しているため、ボタンを有効にする必要があります)。
これはどのように機能するはずですか?
前もって感謝します。