2011-03-31 72 views
2

我的ViewModel需要知道View中選擇了哪個AccordionItem。因此,在視圖模型我有:無法將Accordion SelectedIndex綁定到MVVM整數屬性

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> 

的問題?手風琴做了一些奇特的展開/摺疊動畫,但是accordion_index的設置方法永遠不會被調用。此外,我可以在虛擬機的構造函數中設置accordion_index,並且在加載視圖時將調用get方法,並且我的硬編碼值將被返回,但Accorion忽略它並始終默認爲第一個被擴展的項目。爲什麼?我是WPF的新手,但相當肯定我已經正確地綁定了這個。

+4

答案很簡單,但我沒有時間檢查它,所以我會寫在評論中:'{Binding accordion_index,Mode = TwoWay}' – vorrtex 2011-03-31 15:59:57

回答

5

隨着vorrtext指出,您需要將Mode=TwoWay添加到您的綁定。 Accordion從ItemsControl派生並添加它自己的SelectedIndex屬性。

使用ListBox或派生自Selector的任何控件,SelectedIndex默認情況下將雙向綁定。他們這樣做是因爲他們在屬性元數據中指定了FrameworkPropertyMetadataOptions.BindsTwoWayByDefault。手風琴沒有這樣做,所以你必須每次手動完成。

相關問題