我如何传递True
给一个CommandParameter
?
目前我必须添加Boolean.True
到资源字典中,但这似乎是一种笨拙的方式。
我如何传递True
给一个CommandParameter
?
目前我必须添加Boolean.True
到资源字典中,但这似乎是一种笨拙的方式。
由于命令参数的类型为“对象”,因此 XAML 解析器无法为您执行类型转换。如果您传递 'true',则解析器无法知道您希望将其转换为布尔值。您必须明确地执行此操作。您可以使用属性元素语法:
<Button>
<Button.CommandParameter>
<sys:Boolean>true</sys:Boolean>
</Button.CommandParameter>
</Button>
sys 名称空间的映射位置:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
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}" />
您的 XAML 更改为此。
<Button
Command="{Binding Path=WhateverCommand}"
CommandParameter="{x:Static BooleanHelper.True}" />