wpf 控件事件触发问题

tiger波波 2017-06-01 10:02:03
大家好,我现在在学习使用wpf开发,发现一个比较烦的问题。
wpf 窗口上的控件事件,每次打开这个窗口就会触发一次,不像MFC那样,窗口打开后并不触发,只在操作控件时才会触发
比如combobox的selectionchanged事件,每次打开窗口就会触发一次

请问如何实现窗口打开后并不触发,只在操作控件时才会触发的效果?
我现在采取使用全局标志的笨办法来控制,感觉很不正规
...全文
425 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
exception92 2017-06-02
  • 打赏
  • 举报
回复
引用 4 楼 Libby1984 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] 比如combobox的selectionchanged事件,每次打开窗口就会触发一次 -》如果combobox默认有值就会触发changed事件,你可以在窗口的Loaded加载完毕事件中为combobox手动赋值。
在Loaded事件中赋值一样会每次打开都会触发吧,因为Loaded事件也是每次打开都会执行。应该是先给combobox设默认值,然后在Loaded事件中注册selectionchanged事件。其实就要确保注册selectionchanged事件要在给combobox设默认值之后执行。[/quote] 手动赋值 是不会的。 combobox的加载 前于窗体加载,窗体加载完毕了,说明整个窗口的layout已经完成,这时的combobox还没有数据,就不会触发selectionchanged事件。
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
比如combobox的selectionchanged事件,每次打开窗口就会触发一次 -》如果combobox默认有值就会触发changed事件,你可以在窗口的Loaded加载完毕事件中为combobox手动赋值。
在Loaded事件中赋值一样会每次打开都会触发吧,因为Loaded事件也是每次打开都会执行。应该是先给combobox设默认值,然后在Loaded事件中注册selectionchanged事件。其实就要确保注册selectionchanged事件要在给combobox设默认值之后执行。
  • 打赏
  • 举报
回复
引用 2 楼 Libby1984 的回复:
当你为CommboBox的SelectedIndex或者SelectedItem赋值后才会触发SelectionChanged事件,你如果不想让它在打开窗口的时候触发的话,就不要再构造函数或者Loaded事件中为它赋值,而是在你需要的时候去改变。
还有一个方法就是如果你需要它有默认值,那么就在构造函数中赋值,在SelectionChanged事件的处理函数中判断IsLoaded属性,如果已经加载才执行,没有加载就退出。
  • 打赏
  • 举报
回复
当你为CommboBox的SelectedIndex或者SelectedItem赋值后才会触发SelectionChanged事件,你如果不想让它在打开窗口的时候触发的话,就不要再构造函数或者Loaded事件中为它赋值,而是在你需要的时候去改变。
exception92 2017-06-01
  • 打赏
  • 举报
回复
比如combobox的selectionchanged事件,每次打开窗口就会触发一次 -》如果combobox默认有值就会触发changed事件,你可以在窗口的Loaded加载完毕事件中为combobox手动赋值。

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧