使用静态可见性枚举作为命令参数

时间:2014-10-11 15:58:46

标签: c# wpf xaml enums

好吧,所以,这个问题看起来很简单,但不知何故我无法解决这个问题,无论如何我都会问它......

我想在Visibility的{​​{1}} CommandParameter中使用KeyBinding(注意<!--THIS LINE-->部分):

<Window ...
    xmlns:sys="clr-namespace:System;assembly=System"
    ...>
...
<Window.InputBindings>
</Window.InputBindings>
<Grid DataContext="{StaticResource MainWindowVM}">
    ...
    <ScrollViewer Grid.Column="0" Grid.Row="1" Background="Gray">
        <ScrollViewer.InputBindings>
        ...
            <!--THIS LINE--><KeyBinding Key="OemOpenBrackets" Command="{Binding EditLeftBarLineVisibilityCommand}" CommandParameter="{x:Static sys:Visibility.Visible}"/>
            <!--THIS LINE--><KeyBinding Key="OemCloseBrackets" Command="{Binding EditRightBarLineVisibilityCommand}" CommandParameter="{x:Static sys:Visibility.Visible}"/>
        </ScrollViewer.InputBindings>
        ...
    </ScrollViewer>
</Grid>

但是,似乎:

  

名称&#34;可见性&#34;命名空间中不存在&#34; clr-namespace:System; assembly = System&#34;

我在我的虚拟机中查找了Visibility,它位于System.Windows,但我无法在XAML上找到,上面(System)是我发现的最接近的一个,结果并不好。

任何人都知道在XAML中使用什么命名空间? (虽然列出的XAML中没有System.Windows,如果结果我没有引用它,我的VM也不能正确使用它?)

或者,是否有必要仅对ObjectDataProvider System使用Enum? (因为我可以在没有ObjectDataProvider的情况下无缝地执行此操作,如果它是我自己的自定义枚举)

P.S。 MSDN:http://msdn.microsoft.com/en-us/library/system.windows.uielement.visibility%28v=vs.95%29.aspx

1 个答案:

答案 0 :(得分:5)

标准WPF名称空间映射到默认XML名称空间(http://schemas.microsoft.com/winfx/2006/xaml/presentation),因此您不需要任何前缀:

CommandParameter="{x:Static Visibility.Visible}"