Wpf 无法将Accordion SelectedIndex绑定到MVVM integer属性

Wpf 无法将Accordion SelectedIndex绑定到MVVM integer属性,wpf,mvvm,binding,toolkit,Wpf,Mvvm,Binding,Toolkit,我的ViewModel需要知道在视图中选择了哪个AccordionItem。因此,在ViewModel中,我有: public class ServerListControlViewModel : ObservableObject { private int _accordion_index; public int accordion_index { get { return _accordion_index; } set

我的ViewModel需要知道在视图中选择了哪个AccordionItem。因此,在ViewModel中,我有:

public class ServerListControlViewModel : ObservableObject
{
    private int _accordion_index;
    public int accordion_index
    {
        get { return _accordion_index; }
        set
        {
            _accordion_index = value;
            RaisePropertyChanged("accordion_index");
        }
    }
}
在我看来,我有

<toolkitLayout:Accordion SelectedIndex="{Binding accordion_index}">
  <toolkitLayout:AccordionItem items go here>
</toolkitLayout:Accordion>


问题出在哪里?手风琴做了奇特的展开/折叠动画,但手风琴索引的set方法从未被调用。此外,我可以将accordion_index设置为VM的构造函数中的某个内容,加载视图时将调用get方法,并返回我的硬编码值,但Accorion会忽略它,并始终默认为展开的第一项。为什么?我是WPF新手,但相当肯定我已经正确地绑定了它。

正如vorrtext指出的,您需要在绑定中添加
Mode=TwoWay
。Accordion派生自ItemsControl,并添加其自己的SelectedIndex属性


对于ListBox或从Selector派生的任何控件,SelectedIndex默认情况下将双向绑定。之所以这样做,是因为它们在属性元数据中默认指定FrameworkPropertyMetadataOptions.Bindstwoway。手风琴不能做到这一点,所以你每次都必须手动操作。

答案很简单,但我没有时间检查,所以我将把它写在注释中:
{Binding Accordion\u index,Mode=TwoWay}