I need to create hot-keys for every control + number combination and would prefer not to have create ten commands. Is there any way to do this?
What is the use of default keyword in C#? Is it introduced in C# 3.0 ?
I need to create hot-keys for every control + number combination and would prefer not to have create ten commands. Is there any way to do this?
If I understand your question, you have a single command, say MyCommand
, and you want to fire it if the user presses CTRL+0 through CTRL+9, and give the command a different parameter for each combination.
In that case, just create 10 key bindings in your window, all bound to MyCommand
, and give them a parameter:
<Window.InputBindings>
<KeyBinding Command="MyCommand" Gesture="Ctrl+0" CommandParameter="0"/>
<KeyBinding Command="MyCommand" Gesture="Ctrl+1" CommandParameter="1"/>
<KeyBinding Command="MyCommand" Gesture="Ctrl+2" CommandParameter="2"/>
<KeyBinding Command="MyCommand" Gesture="Ctrl+3" CommandParameter="3"/>
<KeyBinding Command="MyCommand" Gesture="Ctrl+4" CommandParameter="4"/>
<KeyBinding Command="MyCommand" Gesture="Ctrl+5" CommandParameter="5"/>
<KeyBinding Command="MyCommand" Gesture="Ctrl+6" CommandParameter="6"/>
<KeyBinding Command="MyCommand" Gesture="Ctrl+7" CommandParameter="7"/>
<KeyBinding Command="MyCommand" Gesture="Ctrl+8" CommandParameter="8"/>
<KeyBinding Command="MyCommand" Gesture="Ctrl+9" CommandParameter="9"/>
</Window.InputBindings>
Yes, you can create a custom KeyBinding that does this. The code would look something like this:
[ContentProperty("Keys")]
public class MultiKeyBinding : InputBinding
{
public ModifierKeys Modifiers;
public List<Key> Keys = new List<Key>();
private Gesture _gesture;
public override InputGesture Gesture
{
get
{
if(_gesture==null) _gesture = new MultiKeyGesture { Parent = this };
return _gesture;
}
set { throw new InvalidOperationException(); }
}
class MultiKeyGesture : InputGesture
{
MultiKeyBinding Parent;
public override bool Matches(object target, InputEventArgs e)
{
bool match =
e is KeyEventArgs &&
Parent.Modifiers == Keyboard.Modifiers &&
Parent.Keys.Contains( ((KeyEventArgs)e).Key );
// Pass actual key as CommandParameter
if(match) Parent.CommandParameter = ((KeyEventArgs)e).Key;
return match;
}
}
}
It would be used like this:
<local:MultiKeyBinding Command="..." Modifiers="Control">
<Key>D0</Key>
<Key>D1</Key>
...
</local:MultiKeyBinding>
Hope this helps.
What is the use of default keyword in C#? Is it introduced in C# 3.0 ?
I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...
I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...
I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...
I have two EF entities. One has a property called HouseNumber. The other has two properties, one called StartHouseNumber and one called EndHouseNumber. I want to create a many to many association ...
How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...
Since I cannot order my dictionary, what is the best way of going about taking key value pairs and also maintaing an index?
Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...