我有一个程序,其中一个按钮只有在相应的 userControl 具有焦点时才应该处于活动状态。
我正在使用 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"/>
我还没有发布 userControl 的 xaml,但想法是当 userControl 有焦点时,CanExecute 应该是真的。我认为它可以与 Keyboard.FokusedElement 一起使用,但我错了。我能做些什么?
先感谢您。