0

CommandParameter を「_9」ではなく「9」にしたいと思います。

<Button Content="_9"
        Focusable="False"
        Command="{Binding NumberPress}"
        CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Content}"
        Style="{DynamicResource NumberButton}"
        Margin="92,134,92,129" />

CommandParameter="9" を実行できることはわかっていますが、スタイルを引き出して複数のボタンに適用したいと考えています。StringFormat= を使用してみましたが、機能しないようです。コードビハインドに頼らずにこれを行う方法はありますか?

4

2 に答える 2

0

NumberPress によって参照されるコマンドを変更できる場合、最も簡単な解決策は、そこでコマンド パラメータを解析して番号を取得することです。それができない場合、別の解決策として IValueConverter クラスを作成し、それを CommandParameter バインディングに追加します。

<Button Content="_9"
        Focusable="False"
        Command="{Binding NumberPress}"
        CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self},
                 Path=Content, Converter={StaticResource NumberConverter}}"
        Margin="92,134,92,129" />

実装:

public class NumberConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is string)
        {
            string strVal = ((string)value).TrimStart('_');
            int intVal;
            if (int.TryParse(strVal, out intVal))
                return intVal;
        }
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value;
    }
}
于 2013-04-20T16:38:25.140 に答える