2011-08-26 42 views
1

這是我能給出的最純粹的例子。
我有一個簡單的組合框:Silverlight 4 ComboBox - 在SelectedItem上使用OneWay綁定時出現的問題

<ComboBox ItemsSource="{Binding ItemsSource}" SelectedItem="{Binding SelectedItem, Mode=OneWay}"/> 

這是代碼隱藏:

public partial class MainPage : UserControl, INotifyPropertyChanged 
    { 
     private List<string> m_ItemsSource; 
     public List<string> ItemsSource 
     { 
      get 
      { 
       return m_ItemsSource; 
      } 
      set 
      { 
       m_ItemsSource = value; 
       PropertyChanged(this, new PropertyChangedEventArgs("ItemsSource")); 
      } 
     } 

     private string m_SelectedItem; 
     public string SelectedItem 
     { 
      get 
      { 
       return m_SelectedItem; 
      } 
      set 
      { 
       m_SelectedItem = value; 
       PropertyChanged(this, new PropertyChangedEventArgs("SelectedItem")); 
      } 
     } 

     public MainPage() 
     { 
      InitializeComponent(); 
      DataContext = this; 
      ItemsSource = new List<string>() 
      { 
       "Value A", 
       "Value B"   
      };    
     } 

     private void button1_Click(object sender, RoutedEventArgs e) 
     { 
      SelectedItem = "Value A"; 
     } 

     private void button2_Click(object sender, RoutedEventArgs e) 
     { 
      SelectedItem = "Value B"; 
     } 

     public event PropertyChangedEventHandler PropertyChanged;  
    } 

出於某種原因,在正確的第一個按鈕點擊組合框更新的SelectedItem但隨後停止響應。
但奇怪的是,當改爲Mode = TwoWay,它的工作原理。
我特別需要OneWay綁定,並且不希望ComboBox更改屬性。 這是一個已知的錯誤或一些奇怪的設計決定?

回答

相關問題