Silverlight 手风琴内容模板与viewmodel的通信

Silverlight 手风琴内容模板与viewmodel的通信,silverlight,mvvm,mvvm-light,silverlight-toolkit,silverlight-5.0,Silverlight,Mvvm,Mvvm Light,Silverlight Toolkit,Silverlight 5.0,在silverlight 5 mvvm项目中,我有以下代码: 视图: 代码运行正常,我的菜单项在accordion控件中可见,子菜单项也加载到列表框中。当我在列表框中选择一个项目时,问题就出现了,我希望将所选项目作为SelectedMenuItem报告回我的ViewModel。但是属性SelectedMenuItem从未被填充,所以我猜代码无法解析属性的位置。 有人能指出我做错了什么吗?我找到了解决问题的方法,我更新了视图中的Accordion.ContentTemplate代码,代码现在如下所

在silverlight 5 mvvm项目中,我有以下代码:

视图:

代码运行正常,我的菜单项在accordion控件中可见,子菜单项也加载到列表框中。当我在列表框中选择一个项目时,问题就出现了,我希望将所选项目作为SelectedMenuItem报告回我的ViewModel。但是属性SelectedMenuItem从未被填充,所以我猜代码无法解析属性的位置。
有人能指出我做错了什么吗?

我找到了解决问题的方法,我更新了视图中的Accordion.ContentTemplate代码,代码现在如下所示:

<toolkit:Accordion.ContentTemplate>
<DataTemplate>
    <ListBox ItemsSource="{Binding Path=SubMenuItems}"
                Margin="2 2 0 0"
                BorderThickness="0"
                SelectedItem="{Binding RelativeSource={RelativeSource AncestorType=navigation:Page}, Path=DataContext.SelectedMenuItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=Name}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</DataTemplate>


使用此代码,视图现在可以在ViewModel中找到SelectedMenuItem属性

您可以将自己的答案标记为已接受,以便其他人可以看到此问题已得到解决。我会的,但我必须等待一天才能完成。
public ObservableCollection<MenuItem> MenuItems
{
    get { return _menuItems; }
    set 
    {
       _menuItems = value;
       RaisePropertyChanged("MenuItems");
    }
}

public object SelectedMenuItem
{
    get { return _selectedMenuItem; }
    set
    {
        _selectedMenuItem = value;
        RaisePropertyChanged("SelectedMenuItem");
    }
}
public string Name { get; set; }

public ObservableCollection<SubMenuItem> SubMenuItems { get; set; }
public string Name { get; set; }
<toolkit:Accordion.ContentTemplate>
<DataTemplate>
    <ListBox ItemsSource="{Binding Path=SubMenuItems}"
                Margin="2 2 0 0"
                BorderThickness="0"
                SelectedItem="{Binding RelativeSource={RelativeSource AncestorType=navigation:Page}, Path=DataContext.SelectedMenuItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=Name}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</DataTemplate>