好吧,所以,这个问题似乎很简单,但不知怎的,我无法弄明白,反正我会问它...
我想用Visibility在这样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>
Run Code Online (Sandbox Code Playgroud)
但是,似乎:
名称"Visibility"在名称空间"clr-namespace:System; assembly = System"中不存在
我Visibility在我的VM中寻找并且它位于System.Windows,但我在XAML上找不到,上面(System)是我发现的最接近的一个,结果并不好.
任何人都知道在XAML中使用什么命名空间?(虽然System.Windows在XAML中没有列出,如果结果我没有引用它,我的VM也不能正确使用它?)
或者,是否有必要ObjectDataProvider仅用于System Enum?(因为ObjectDataProvider如果它是我自己的自定义枚举,我可以无缝地执行此操作)
PS MSDN:http://msdn.microsoft.com/en-us/library/system.windows.uielement.visibility%28v=vs.95%29.aspx
标准WPF名称空间映射到默认的XML名称空间(http://schemas.microsoft.com/winfx/2006/xaml/presentation),因此您不需要任何前缀:
CommandParameter="{x:Static Visibility.Visible}"
Run Code Online (Sandbox Code Playgroud)