Учитывая следующий XAML ...ComboBox, Button и ICommand привязок (MVVM иш)
<ComboBox x:Name="advisoriesComboBox"
DisplayMemberPath="Name"
ItemsSource="{Binding Path=Advisories}"
SelectedItem="{Binding Path=SelectedAdvisory}" />
<Button Command="{Binding Path=AddAdvisoryCommand}"
CommandParameter="{Binding ElementName=advisoriesComboBox, Path=SelectedItem}"
CommandTarget="{Binding ElementName=advisoriesComboBox}"
Content="Add..." />
Я ищу способ, чтобы связать ComboBox, Button и команды таким образом, что, когда значение изменений ComboBox, CanExecute вызывается в Command. Чистый эффект от того, что я хочу, - это возможность включать и отключать кнопку на основе того, какой элемент выбран в списке, и я бы предпочел сделать это, используя интерфейс ICommand.
Я делал это в прошлом, используя свойство «SelectedAdvisory» на виртуальной машине и вручную вызывая RaiseCanExecuteChanged для объектов команды (я использую экземпляры DelegateCommand из PRISM v4), но я уверен, что есть лучшее и более чистый способ сделать это, используя только XAML.
Спасибо.
EDIT: Кроме того, есть ли более простой способ ссылки на ComboBox с Button? Я попытался использовать RelativeSource PreviousData, но не смог заставить его работать, следовательно, использование x:Name
.
Еще раз спасибо.
То, что вы делали в прошлом, выглядит довольно хорошо для меня. Я не уверен, что XAML - лучшее место для этого. – ken2k