У меня есть программа, в которой кнопка должна быть активной только в том случае, если соответствующий пользовательский элемент управления имеет фокус.
Я использую MVVM light и получил команду, реализующую интерфейс ICommand.
Я пытался использовать Keyboard.FocusedElement, но это ничего не возвращает.
Это код для команды (обратите внимание, что она просто возвращает true прямо сейчас, чтобы заставить ее работать, это, конечно, то, что я пытаюсь исправить):
class AddItemToNodeCommand<T> : ICommand
{
public bool CanExecute(object parameter)
{
Debug.WriteLine("fokuselement er: " + Keyboard.FocusedElement);
return true;
// throw new NotImplementedException();
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
Debug.WriteLine("Parameter er: " + parameter);
Debug.WriteLine("fokuselement er: " + Keyboard.FocusedElement);
//throw new NotImplementedException();
}
}
Из модели представления:
public ICommand AddItemToNodeCommand { get; private set; }
AddItemToNodeCommand = new AddItemToNodeCommand<object>();
И, наконец, немного XAML:
<RibbonButton SmallImageSource="../Images/whatever.png" Label="Attribute" Command="{Binding AddItemToNodeCommand}" CommandParameter="Attribute"/>
Я не опубликовал xaml для userControl, но идея в том, что когда userControl имеет фокус, CanExecute должен быть истинным. Я думал, что это будет работать с Keyboard.FokusedElement, но я ошибался. Что я могу сделать?
Заранее спасибо.