你用代码修改selectedIndex,当然就变了,而事件也必然要触发.
除非事件在赋初始值之后再绑定
就是用代码绑定,而不是双击事件自动生成,那样代码在InitializeComponent里,比赋值先执行

解决方案 »

  1.   


            bool _b=false;
            public MainWindow()
            {
                InitializeComponent();
            }        private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                if(!_b) return;
                MessageBox.Show("被执行了");
            }        private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                 this._b=true;
                 combobox1.Text = "5";
            }
      

  2.   

    好像是因为控件实例化的构造函数是无参的
    然后先注册了事件,再然后设置值把默认值改了就触发了事件
    用FrameworkElement.IsLoaded 属性检查已加载此元素以供呈现
    然后再执行事件代码        private void TextBox1_TextChanged(object sender, TextChangedEventArgs e)
            {
                if (IsLoaded)
                    TextBox2.Text = TextBox1.Text;
            }这个代码里面
    如果没有判断,会抛异常 TextBox2 是 null
    先注册了事件,再设置TextBox1.Text的值,马上就触发了事件,这个时候还没有TextBox2
      

  3.   

    其实吧,这个没什么大不了的,就是它被触发了,又能怎么样。如果你非不想在开始的时候触发它。
    可以先把挂载的事件给摘了,执行完后再挂上。这样做
    combobox1.SelectionChanged-=ComboBox_SelectionChanged;
    combobox1.Text = "5";
    combobox1.SelectionChanged+=ComboBox_SelectionChanged;
    这样基础的问题应
      

  4.   

    diamondwjk的方法不错,其他方法也都能实现我的要求,回来我好好看看书,原理性我没搞太明白,WPF还是有自己很多内在的东西呢,在此向大家学习了,说声谢谢,希望后来者能借鉴我遇到的问题,呵呵都给分