说我有以下内容 -
<TreeView ...>
<TreeView.Resources>
<command:DoSomethingCommand x:Key="DoSomethingCommand"/>
</TreeView.Resources>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate
ItemsSource="{Binding Children}">
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="DoSomething"
Command="{StaticResource DoSomethingCommand}"
CommandParameter="{Binding Mode=OneWay}"/>
...
DoSomethingCommand需要一般应用程序设置。假设它是一个Save命令,需要默认的目录位置。
如何将这个用于ICommand实现?
答案 0 :(得分:1)
您应该能够在ICommand
到Properties.Settings.Default.NameOfTheSetting
的实现中直接访问它,试图通过XAML传递它对我来说似乎不是一个好主意。
如果确实想要,请添加xmlns:
xmlns:properties="clr-namespace:TestSettings.Properties"
然后你可以通过以下方式绑定它:
<MenuItem Header="Some Menu"
Command="{Binding Path=SomeCommand}"
CommandParameter="{Binding Source={x:Static properties:Settings.Default},
Path=SomeSetting,
Mode=OneWay}" />
答案 1 :(得分:0)
我可以从您的代码段中看到两个选项。
通过您的viewmodel将适当的属性绑定传递到CommandParameter
中的HierarchicalDataTemplate
。您应该有资格使用{Binding FilePath, Mode=OneWay}
这个名称,您可以将其声明为string
或Path
。然后,CommandParameter
会将其作为您可以通过ICommand.Execute(object parameter)
直接在ICommand.Execute()
方法中引用静态属性。