4

我如何传递True给一个CommandParameter

目前我必须添加Boolean.True到资源字典中,但这似乎是一种笨拙的方式。

4

3 回答 3

12

由于命令参数的类型为“对象”,因此 XAML 解析器无法为您执行类型转换。如果您传递 'true',则解析器无法知道您希望将其转换为布尔值。您必须明确地执行此操作。您可以使用属性元素语法:

<Button>
  <Button.CommandParameter>
    <sys:Boolean>true</sys:Boolean>
  </Button.CommandParameter>
</Button>

sys 名称空间的映射位置:

xmlns:sys="clr-namespace:System;assembly=mscorlib"
于 2012-01-04T06:17:36.240 回答
10

ColinE 的回答很好,但我认为将 true/false 定义为资源会更简洁一些。你只需要这样做一次:

<UserControl.Resources>
    <sys:Boolean x:Key="BoolTrue">True</sys:Boolean>
    <sys:Boolean x:Key="BoolFalse">False</sys:Boolean>
</UserControl.Resources>

然后,您可以将其作为 aStaticResource引用CommandParameter

<Button CommandParameter="{StaticResource BoolTrue}" />
于 2013-04-26T02:04:53.030 回答
5

您的 XAML 更改为此。

<Button 
    Command="{Binding Path=WhateverCommand}" 
    CommandParameter="{x:Static BooleanHelper.True}" />
于 2016-06-29T07:45:54.463 回答