我知道Items Control中没有选定的项属性 所以我试图通过命令参数来做这些事情:
<ItemsControl ItemsSource="{Binding Vrapper.myVM.Names}" x:Name="NamesCtr">
<ItemsControl.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding}">
<MenuItem.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Command" Value="{Binding ElementName=NamesCtr, Path=DataContext.Vrapper.myVM.LoadCommand}"/>
<Setter Property="CommandParameter" Value="{Binding}" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
命令不起作用=(
...
loadCommand = new VrapCommand(load);
...
public void load(Object obj)
{
string chosenName = obj as string;
}
如果我将尝试以下DataTemplate:
<DataTemplate>
<MenuItem Header="{Binding}" Command="{Binding ElementName=NamesCtr, Path=Path=DataContext.Vrapper.myVM.LoadCommand}"/>
</DataTemplate>
命中加载函数(该命令正在运行),但我需要将此参数(所选菜单项的名称)传递给函数。