我有一个具有Command属性的按钮。 但是,我想要禁用该按钮(用户无法单击它),直到单击另一个按钮。例如,用户只能在单击“新建”按钮后单击“保存”按钮
所以我做以下
<telerik:RadButton Content="Save" Height="22" HorizontalAlignment="Right" Margin="0,0,72,25" Name="saveRBtn" VerticalAlignment="Bottom" Width="43" Grid.Column="5" Grid.Row="4"
IsEnabled="False"
Command="{Binding Path=LoadCommand, ElementName=documentLineDomainDataSource}"
Click="saveRBtn_Click"/>
但是,如果我有Command属性,似乎没有使用设置IsEnabled = False禁用该按钮 当我从命令属性中取出代码然后设置IsEnabled = false工作正常
不确定如果Command属性出现,IsEnabled设置无效的原因。
请帮帮我
谢谢
答案 0 :(得分:4)
按钮可以使用或不使用Command。如果不使用Command,则使用Click事件和IsEnabled属性。它们优先于Command,因为它们更“直接”(并且在它支持Command属性之前在Silverlight中)。
通常,如果使用Command,则不设置IsEnabled并且不处理Click事件。如果可以执行该命令(CanExecute属性),则将启用该按钮,并且它将调用该按钮的Execute方法。
要回答您的问题,您应该删除IsEnabled和Click处理程序的设置,并通过Command对象执行所有操作。
答案 1 :(得分:1)
查看型号代码
public const string IsEnabledPropertyName = "IsEnabled";
private bool _IsEnabled = false;
public bool IsEnabled
{
get
{
return _IsEnabled;
}
set
{
if (_IsEnabled == value)
{
return;
}
_IsEnabled = value;
// Update bindings, no broadcast
RaisePropertyChanged(IsEnabledPropertyName);
}
}
试试这个.......
因为Buttons IsEnabled属性应该具有比命令的CanExecute方法返回值更高的优先级您还可以检查此论坛帖子。因此,目前,您不能同时使用IsEnabled和Command属性,您只需使用CanExecute方法来控制按钮的状态。