什么是WPF最糟糕的陷阱?

Dav*_*vid 15 wpf

我已经开始把自己列为"WPF陷阱"的列表:让我烦恼的事情,我不得不写下来记住,因为我每次都为他们堕落......

现在,我很确定你们在某一时刻偶然发现了类似的情况,我希望你们分享一下你们在这个问题上的经验:

什么是让你一直得到你的东西?你觉得最烦人的那个?

(我有几个问题似乎没有解释,也许你的提交将解释它们)

以下是我的一些"人物"陷阱(随机呈现):

  1. 即使单击位于控件(例如标签)的"透明"背景上而不仅仅是内容(本例中为文本)上,也要触发MouseEvent,控件的背景必须设置为"画笔".透明"而不仅仅是"null"(标签的默认值)

  2. WPF DataGridCell的DataContext是单元所属的RowView,而不是CellView

  3. 在ScrollViewer中,滚动条由滚动查看器本身管理(即设置属性,如ScrollBar.Value没有效果)

  4. Key.F10当您按下"F10",而不是你是不是开除Key.System,你必须去看看e.SystemKey,以获得Key.F10

......现在你开始了.

Gre*_*g D 14

  1. 始终在输出窗口中查看绑定错误.忽略输出窗口是一个流泪的秘诀.

  2. 在调试绑定失败时,在绑定中使用PresentationTraceOptions.TraceLevel ="High"来获取详细的绑定信息.

  3. 创建静态,不变的资源,例如画笔PresentationOptions:Freeze ="True"以在运行时节省资源.

  4. 使用WPF DataGrid作为数据网格.修改它以表现得像Excel是一个巨大的痛苦的屁股.

  5. BindingList<T>与CollectionViewSource不兼容.ObservableCollection<T>而是从您的viewmodels中公开.

  6. 互联网提供了六种不同的想法,用于在WPF文本框中显示CueBanner文本.他们都破了.

  • 在wpf文本框中可靠显示水印/提示横幅文本的唯一技术是将带有文本的文本块手动注入到文本框的可视树中。这依赖于文本框可视化树的特定方面,但是由于您为横幅文本保持正确的z顺序,因此它在不同的环境中始终如一地工作。使其成为附属财产的奖励积分。 (2认同)

Mat*_*ský 7

1)当我从WinForms进行转换时,曾经每半小时给我一个:在UI上放置随机文本时使用TextBlock而不是Label(或者如果文本是静态的,根本不使用任何标签) !

2)DataTriggers/Triggers不能放入Control.Triggers,但必须进入Control.Styles/Style/Style.Triggers

3)房产的类型必须实现IList,而不是IList<T>,如果属性是通过XAML作为一个集合属性的认可.

4)绑定捕获异常.

5)使用单例转换器/静态转换器类,因此每次使用时都不必创建新的转换器.

6)必须明确指定DependencyProperty默认值的类型:0u作为uint,(float) 0作为float,0.0作为double ...

7)如果控件的属性定义在其内容之前或之后,则很重要.

8)永远不要PropertyMetadata用来设置引用类型的默认值DependencyProperty.将为拥有类的所有实例分配相同的对象引用.