Все, что я хотел, - это разные привязки на разных вкладках, поэтому переключение вкладок переключало бы доступность команд.Я думал, что CommandBindings работает таким образом.
Но я потратил последнее время, пытаясь заставить этот простой пример работать.Либо я в корне неправильно понимаю (и это не будет первым), либо что-то не так.
Я добавляю CommandBinding к textBoxA, но НЕ к textBoxB.Перемещение между ними должно включать и отключать кнопку, для которой установлена соответствующая команда.
Добавление привязки Command к окну просто прекрасно активирует кнопку, но этот тип убивает весь смысл привязанных к элементам CommandBindings.
Использование этого 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 кнопки).
Как это должно работать?
Заранее спасибо.