Silverlight 4 ComboBox - 在SelectedItem上使用OneWay绑定时出错

时间:2011-08-26 23:31:57

标签: silverlight data-binding silverlight-4.0 combobox

这是我能给出的最纯粹的例子 我有一个简单的ComboBox:

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

这是CodeBehind:

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;       
    }

出于某种原因,ComboBox中的SelectedItem在第一次按键单击时正确更新,但随后停止响应。
但奇怪的是,当改为 Mode = TwoWay 时,它会起作用 我特别需要一个OneWay绑定,不希望ComboBox更改属性。 这是一个已知的错误还是一些奇怪的设计决定?

1 个答案:

答案 0 :(得分:0)

这是一个已知的错误,似乎它仍然在Silverlight 4中发生。始终使用TwoWay与SelectedItem绑定。

Binding ComboBox.SelectedItem in Silverlight