我需要制作这样的按钮:
<fluent:Button
Size="Middle"
Visibility="{Binding Path=SomeTestingMethod}"
Command="{Binding Path=OtherMethod}" CommandParameter="PP"
Some Text</fluent:Button>
在&#34; CommandParameter&#34;的情况下是否可见?我试过了:
public Visibility SomeTestingMethod(object o)
{
return o.ToString == "something" ? Visibility.Visible : Visibility.Collapsed;
}
但编译器甚至不检查它。也试过这样的东西:
private Visibility _someTestingMethod;
public Visibility SomeTestingMethod
{
get {
var commandExecutor = new RelayCommand(ButtonVisibility);
return _statusButtonsVisibility;
}
}
public void ButtonVisibility(object o)
{
_statusButtonsVisibility =
o.ToString == "something" ? Visibility.Visible : Visibility.Collapsed;
}
&#34; SomeTestingMethod&#34;然后到达但是&#34; ButtonVisibility&#34;不。
我找到了其他方法来获得可见性,但是没有一个方法可以让我获得CommandParameter。
如何正确地做到这一点?
答案 0 :(得分:1)
我对所提供的代码有一些评论。
首先,如果用户不点击它,你真的想让按钮消失吗?我问,因为ICommand
接口有一个CanExecute()
方法,它可以保存逻辑以确定命令是否可以执行。当按钮绑定到属性时,该属性是实现ICommand
界面的对象的实例,该按钮将根据CanExecute()
的结果自动启用/禁用自身逻辑。请注意,如果该逻辑在不同的线程上执行某些操作,则可能必须强制重新查询命令的可用性。
如果您确实希望按钮消失而不是被禁用,正如@Jason Boyd在评论中所提到的那样,最好通过将可见性绑定到视图模型中的布尔属性来实现。使用BooleanToVisibilityConverter
根据属性的真/假显示/隐藏按钮。
视图模型应该实现INotifyPropertyChanged
接口来传递属性更改以更新绑定目标。
希望这能为您提供正确的方向。
答案 1 :(得分:0)
您无法在绑定到Visibility属性的属性中获取CommandParameter
。
在OtherMethod
方法中获取参数并更改SomeTestingMethod
属性。
或者您可以使用自定义BoolToVisibility转换器来使用参数。