トップ回答者
xamlで複数の列挙定数を指定するには?

質問
-
XAMLで
"ModifierKeys.Control | ModifierKeys.Shift"
のような、複数の列挙定数を結合した値を使用するには、どのような記述を行えば良いのでしょうか?
下のXAMLでは ApplicationCommands.Open に "Ctrl+O" を割り当てていますが、これを、その下のC#のコードのように "Ctrl+Shift+O" を割り当てるように変更したいと思い、
Modifiers="Control"
の部分を
Modifiers="Control Shift"、Modifiers="Control | Shift"、Modifiers="Control,Shift"
等と書き換えてみたのですが、例外が発生してしまい、どのように書くべきかわからずにいます。
よろしくお願い致します。
======================== xaml ======================
<Window x:Class="WindowsApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.InputBindings>
<KeyBinding Command="ApplicationCommands.Open"
Modifiers="Control"
Key="O" />
</Window.InputBindings>
<Grid></Grid>
</Window>
=========================================================================== C# ========================
KeyBinding OpenCmdKeyBinding = new KeyBinding(
ApplicationCommands.Open,
Key.O,
ModifierKeys.Control | ModifierKeys.Shift);
this.InputBindings.Add(OpenCmdKeyBinding);
===================================================
回答
-
プロパティやイベントの属性のその文字列の中に,
1. {} があれば,マークアップ拡張での独自解釈。
2. そのプロパティ自身もしくはそのプロパティの型に,TypeConverter属性が付いていれば,そのコンバータ。
3. プリミティブ型への変換の優先順になります。
で,Modifiersプロパティは,ModifierKeys型になっており,
それにTypeConverter属性が付いていて,ModifierKeysConverterクラスになってます。
なので,ふつうは,
そのクラス(ModifierKeysConverter Class)のヘルプにその手の説明がないといけないと思うんだけど,
今のところないですね。ただ,今後はその探し方でヘルプを見ればわかるようになるんじゃないかと思います。
すべての返信
-
プロパティやイベントの属性のその文字列の中に,
1. {} があれば,マークアップ拡張での独自解釈。
2. そのプロパティ自身もしくはそのプロパティの型に,TypeConverter属性が付いていれば,そのコンバータ。
3. プリミティブ型への変換の優先順になります。
で,Modifiersプロパティは,ModifierKeys型になっており,
それにTypeConverter属性が付いていて,ModifierKeysConverterクラスになってます。
なので,ふつうは,
そのクラス(ModifierKeysConverter Class)のヘルプにその手の説明がないといけないと思うんだけど,
今のところないですね。ただ,今後はその探し方でヘルプを見ればわかるようになるんじゃないかと思います。