按钮可见性转换器

时间:2010-03-26 15:31:53

标签: c# wpf

我有一个要求,其中我需要在用户表单上显示,如果该用户没有配置文件则创建创建按钮,如果他有配置文件则需要编辑按钮。我正在使用转换器来更改按钮的可见性。   一切都运行良好,但是当我点击Create Profile窗口时,它是加载配置文件窗口的构造函数,之后即使我关闭该窗口而没有做任何事情,Create按钮也会转为编辑。我的猜测是,这是因为构造函数会创建配置文件对象,所以即使对象是空的,它也会显示编辑按钮而不是创建。有没有其他方法可以显示按钮可见性??

1 个答案:

答案 0 :(得分:1)

你真的需要改变按钮的可见性吗?这通常不是一个很棒的用户体验练习,因为它会让人们对下一步需要做的事情感到困惑。

要简单地禁用该按钮,您可以为local:LaunchEditor命令的CanExecute方法添加逻辑。还有一个CanExecuteChanged事件,允许UI动态响应命令可访问性的变化。这可能是最简单的事情。

如果您确实需要隐藏按钮,那么您可以根据按钮的IsEnabled属性创建一个带触发器的样式,这将使按钮的可见性Hidden何时IsEnabled==false。但是,您仍应使用该命令来控制按钮的可访问性。

在您的情况下,您将编写两个方法:CanCreateProfileCanEditProfile,并在命令绑定中包含这些方法(在XAML或代码隐藏中):

private void CanCreateProfile(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = userProfile == null;
}

private void CanEditProfile(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = userProfiel != null;
}