将启用/禁用命令按钮转换为可见/不可见的问题

时间:2017-09-05 09:22:21

标签: c# xaml uwp icommand

我是UWP / XAML的新手,我已经找到了一些关于这个主题的文章,但在我的情况下,解决方案只能工作一次。不幸的是,我不允许发布截图,所以会尝试解释它。 我有两个按钮,可以输入/输出时钟。两者都绑定到命令对象。如果没有工人"登录"两个按钮都被禁用。如果有一个工作人员并且他没有时钟输入,则启用ClockInButton并禁用ClockOutButton,反之亦然。这就像一个魅力!

<Button x:Name="ClockInButton" Command="{x:Bind ViewModel.ClockInCommand, Mode=OneWay}" ...></Button>
<Button x:Name="ClockOutButton" Command="{x:Bind ViewModel.ClockOutCommand, Mode=OneWay}...>"</Button>

如果ViewModel更改,则引发CanExecuteChanged-Event并正确更新按钮。 现在我不仅要启用/禁用按钮,而是将它们设置为可见/不可见,这样我们就可以在同一位置显示它们,从而为我们节省了一些空间(我们在shopfloor上只有23&#34;设备)。所以我把它添加到我的两个按钮中。

Visibility="{x:Bind ViewModel.IsWorkerClockedIn, Converter={StaticResource VisibilityConverter}, Mode=OneWay}"

这是我的转换器代码(感谢AlexDrenea的提示):

public class BoolToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        bool enabled = (bool)value;

        if (enabled)
        {
            return Visibility.Visible;
        }
        else
        {
            return Visibility.Collapsed;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

这可以正常启动应用程序的时间。没有工人&#34;已登录&#34;所以没有按钮可见。但是,如果工作人员登录,它们将保持不可见:-(。所有事件(现在)正确引发。 我是否必须编写自己的代码&#34;代码隐藏&#34;或者有没有办法满足XAML的要求?

此致 尼尔斯

1 个答案:

答案 0 :(得分:0)

好吧,我是盲人(至少)。按钮可见性都绑定到同一属性,因此它们始终 可见或两者不可见。 如果正确实施,这个想法就有用了对由此带来的任何不便,我深感抱歉: - (