2014-10-11 65 views
4

好了,所以,这个问题看似简单的尴尬,但不知何故,我不出来,所以,我要问问也无妨......使用静态能见度枚举作为命令参数

我想用这个VisibilityCommandParameterKeyBinding的(注意为<!--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> 

但是,它似乎是:

名称“可见性”并不命名空间中存在“CLR的命名空间:系统;装配=系统”

我看在我的VM Visibility和它位于System.Windows,但我不能发现在XAML上,(System)是我找到的最接近的一个,结果不好。

任何人都知道在XAML中使用什么名称空间? (有中虽然列出的XAML没有System.Windows,如果事实证明我没有提到它,我的虚拟机不能使用它,以及对不对?)

或者,是否有必要使用ObjectDataProviderSystemEnum ? (因为如果它是我自己的自定义枚举,我可以无缝地执行此操作)

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

+1

没有什么是“尴尬的简单”与WPF,尤其是当命令被卷入。 : -/ – 2014-10-11 16:03:22

回答

5

标准WPF命名空间被映射到默认XML命名空间(http://schemas.microsoft.com/winfx/2006/xaml/presentation),所以你不需要任何前缀:

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

“愚蠢的大脑,你再次使事情复杂化”。谢谢btw – 2014-10-11 16:25:05