C# 如果不执行其命令,则隐藏控件

C# 如果不执行其命令,则隐藏控件,c#,wpf,C#,Wpf,有一个应用程序,它具有不同的权限模式。根据模式,应用程序的功能有限 因此,我创建了自己的RestrictedRoutedUICommand类,该类继承自RoutedUICommand,它知道何时允许执行该命令 此类RestrictedRoutedUICommand具有一个属性Acmission,该属性指示如果允许它执行命令以及在该属性更改时激发的AdministrationChanged事件 问题是:如果这些控件的命令被禁止,我如何告诉它们隐藏它们的命令呢? 如果无法执行其命令,则应类似于禁用控

有一个应用程序,它具有不同的权限模式。根据模式,应用程序的功能有限

因此,我创建了自己的RestrictedRoutedUICommand类,该类继承自RoutedUICommand,它知道何时允许执行该命令

此类RestrictedRoutedUICommand具有一个属性Acmission,该属性指示如果允许它执行命令以及在该属性更改时激发的AdministrationChanged事件

问题是:如果这些控件的命令被禁止,我如何告诉它们隐藏它们的命令呢? 如果无法执行其命令,则应类似于禁用控件的功能


编辑:我不想使用RoutedUICommand.CanExecute()。因为CanExecute()只应确定是否可以执行该命令。因此,我在RouteDuicCommand中添加了另一个方法来确定是否允许该命令,我希望控件使用这个方法

由于
按钮
已被禁用,您可以根据
IsEnabled属性设置
可见性

<Button ...>
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>
编辑

如果这些属性是独立的,那么您仍然可以通过
绑定
转换器

<Button ... Visibility="{Binding RelativeSource={RelativeSource Self}, Path=Command.Admission, FallbackValue=Visible, Converter={StaticResource BooleanToVisibilityConverter}}" 

由于
按钮
已被禁用,您可以根据
IsEnabled属性设置
可见性

<Button ...>
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>
编辑

如果这些属性是独立的,那么您仍然可以通过
绑定
转换器

<Button ... Visibility="{Binding RelativeSource={RelativeSource Self}, Path=Command.Admission, FallbackValue=Visible, Converter={StaticResource BooleanToVisibilityConverter}}" 


带有禁止命令的按钮是否已被禁用?只有当RoutedUICommand.CanExecute()返回false时,它们才会被禁用。但我想让按钮检查是否允许入场,如果允许,按钮将变为不可见。我想要一个通用解决方案,它适用于所有具有命令的控件。您是否尝试基于
elementName=“yourButton”Value=“IsEnabled”
绑定按钮的可见性?权限模式是否适用于整个应用程序?即,是否同时禁止/允许所有受影响的命令?如果是,您可以将控件的
可见性
属性绑定到应用程序范围的静态属性。fmunkert:True,但我认为限制是命令的问题。因此,它们现在应该在何时可以执行,并且控件只有在无法执行时才应该隐藏。带有禁止命令的按钮是否已经被禁用?它们只有在RoutedUICommand.CanExecute()返回false时才会被禁用。但我想让按钮检查是否允许入场,如果允许,按钮将变为不可见。我想要一个通用解决方案,它适用于所有具有命令的控件。您是否尝试基于
elementName=“yourButton”Value=“IsEnabled”
绑定按钮的可见性?权限模式是否适用于整个应用程序?即,是否同时禁止/允许所有受影响的命令?如果是,您可以将控件的
可见性
属性绑定到应用程序范围的静态属性。fmunkert:True,但我认为限制是命令的问题。因此,它们现在应该在何时可以执行,而控件只应该在无法执行时隐藏。我不想使用RouteDuicCommand.CanExecute()。因为CanExecute()只应确定是否可以执行该命令。因此,我在RouteDuicCommand中添加了另一个方法,该方法确定是否允许该命令,我希望控件使用这个方法。所以它们没有关联?但如果命令不被允许,那么它就无法执行。我仍然希望控件变灰,因为缺少参数,命令无法执行。但是如果命令被禁止,我想让他们藏起来。我只是想知道它是如何实现的,当命令无法执行时,它们会变成灰色。所以我可以用同样的方法来实现我的问题。检查我的编辑。没有办法自动完成,但您仍然可以通过binding@cix很好的决定。在一个会话中,UI应该是一致的,不能让任何东西以逻辑方式消失。遗憾的是,我不想使用RoutedUICommand.CanExecute()。因为CanExecute()只应确定是否可以执行该命令。因此,我在RouteDuicCommand中添加了另一个方法,该方法确定是否允许该命令,我希望控件使用这个方法。所以它们没有关联?但如果命令不被允许,那么它就无法执行。我仍然希望控件变灰,因为缺少参数,命令无法执行。但是如果命令被禁止,我想让他们藏起来。我只是想知道它是如何实现的,当命令无法执行时,它们会变成灰色。所以我可以用同样的方法来实现我的问题。检查我的编辑。没有办法自动完成,但您仍然可以通过binding@cix很好的决定。在一个会话中,UI应该是一致的,不能让任何东西以逻辑方式消失。悲哀的是,你经常看到这一点。