【问题标题】:Windows Font Size screws up WPF applicationWindows 字体大小搞砸了 WPF 应用程序
【发布时间】:2011-03-21 06:47:14
【问题描述】:

我们遇到了这个奇怪的错误,如果打开应用程序并且用户在此处更改了 windows 字体大小:

当字体大小更改为特大时,我们的控件之一DataContext 更改为null,并且它的DataContextChanged 事件也被调用。

不太确定发生了什么,也不知道为什么或什么改变了控件的DataContext。任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 应该是手绘圆圈,而不是花哨的箭头!

标签: wpf datacontext font-size


【解决方案1】:

我假设 ChartItemControlSystem.Windows.Controls.ControlUserControl控件的 Unloaded 事件将在修改 Windows 主题、配色方案或字体大小时触发。如果您在处理 Unloaded 事件时通过重置 DataContext 来清理资源,则需要在再次加载控件时重置您的 DataContext 或在OnApplyTemplate中。

【讨论】:

  • 哇,很好的答案。我不知道这发生了。谢谢!
  • 顺便说一句,你知道字体改变时会发生什么其他事件吗?我需要一个在卸载之前发生的事件(OnApplyTemplate 有效),以及一个在之后发生的事件,因此我可以将 OnApplyTemplate 中的标志设置为 true,并在之后发生的事件中将其设置为 false。谢谢!
  • 或者是否有办法让控件完全忽略 Windows 更改?
  • 我不知道在“卸载”控件“之后”会发生任何事件。我不确定你想用旗帜完成什么。忽略更改是不切实际的,因为原始 WPF 控件的默认模板会适应所选主题。这种设计允许 WPF 应用程序与 Win32/WinForms 应用程序保持一致的外观,即使 Win32 消息不用于绘制 UI 组件。我建议您设计控件,以便在不丢失状态的情况下卸载和重新加载同一个实例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多