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更改屬性。 這是一個已知的錯誤或一些奇怪的設計決定?