1. ホーム
  2. wpf

[解決済み] XAMLにおけるBoolean CommandParameter

2023-05-24 15:32:15

質問

私はこのコードを持っています(これは正しく動作します)。

<KeyBinding Key="Enter" Command="{Binding ReturnResultCommand}">
    <KeyBinding.CommandParameter>
        <s:Boolean>
            True
        </s:Boolean>
    </KeyBinding.CommandParameter>
</KeyBinding>

ここで "s" はもちろん System 名前空間です。

しかし、このコマンドはかなりの回数呼び出され、そうでなければむしろシンプルなXAMLコードを本当に膨らませます。これは本当に XAML のブール型コマンドパラメーターの最も短い表記法なのでしょうか (コマンドを複数のコマンドに分割する以外では)。

どのように解決するのですか?

これは少しハックされるかも知れませんが、"C "の文字列から導き出される KeyBinding クラスから派生させることができます。

public class BoolKeyBinding : KeyBinding
{
    public bool Parameter
    {
        get { return (bool)CommandParameter; }
        set { CommandParameter = value; }
    }
}

使用方法

<local:BoolKeyBinding ... Parameter="True"/>

そして、もう一つのそれほど奇妙ではない解決策。

xmlns:s="clr-namespace:System;assembly=mscorlib"

<Application.Resources>
    <!-- ... -->
    <s:Boolean x:Key="True">True</s:Boolean>
    <s:Boolean x:Key="False">False</s:Boolean>
</Application.Resources>

使用方法

<KeyBinding ... CommandParameter="{StaticResource True}"/>