我希望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”,但我想拉出一个Style来应用于多个按钮。我已经尝试使用StringFormat =但似乎无法使其工作。有没有办法在不诉诸代码的情况下做到这一点?
答案 0 :(得分:2)
如果您在评论中提及的“_”严格属于“仅查看”的一部分,那么您确实可以使用“格式”属性来Content
ContentStringFormat
显示该内容。
说出类似的话:
<Button Margin="92,134,92,129"
Command="{Binding NumberPress}"
CommandParameter="{Binding Content,
RelativeSource={RelativeSource Self}}"
Content="9"
ContentStringFormat="_{0}"
Focusable="False"
Style="{DynamicResource NumberButton}" />
这样,如果您将Button的Content
绑定到某个值,则不必在此处保留“_”。
答案 1 :(得分:0)
如果你可以修改NumberPress引用的Command,那么最简单的解决方案是在那里解析命令参数来获取数字。如果这不是一个选项,那么另一个解决方案是创建一个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;
}
}