由于笔者的记忆力问题,所以把自己在实际开发中发现的一些东西写下来,便于以后查看,由于涉猎WPF不是很久,故所涉及的东西在老鸟看来都是很简单,很表层的,也希望大家多多指点,若内容存在不合理的地方,也请大家指出,笔者会及时纠正,并在此表示感谢。
<window...>
<stackpanel Width="100" FocusManager.FocusedElement="{Binding ElementName=defaultButton}">
<button Content="Default" IsDefault="True" Name="defaultButton" Click="OnDefault">
<button Content="Cancel" IsCancel="True" Name="cancelButton" Click="OnCancel">
<button Content="Empty">
</stackpanel>
</window>
//C#
private void OnDefault(object sender,RoutedEventArgs args){
if(defaultButton.IsDefaulted){
MessageBox.Show("Default Button Clicked!");
}
}
private void OnCancel(object sender,RoutedEventArgs args){
Close();
}
主要是理解IsCancel,IsDefault和IsDefaulted三个属性的关系
当使用Tab键将输入焦点移动到Empty按钮上时,按回车键并不能导致按钮样式改变,也就是说用回车键按Emtpy按钮是失效的。
如果界面声明不设置Cancel按钮的Click事件相应函数,那么,按钮ESC键也不能导致Cancel按钮的Click事件的触发,即时界面声明中设置了Cancel按钮的IsCancel属性为true。
在设置了一个Button类实例的IsCancel属性为true的情况下,点击ESC就是对该按钮的点击。
在设置了一个Button类实例的IsDefault属性为true的情况下,点击回车键就是对该按钮的点击,除非当前具有焦点的界面元素也处理回车键。
IsDefaulted属性只有在IsDefault设置为true并且当前控件没有焦点的时候为true,也就是说,当你在textBox中输入了信息,然后点击回车键以后,就是弹出相应的提示框,如果是Default按钮有焦点,就算点击回车,IsDefaulted属性也为false。