锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / WPF / WPF控件不能实时刷新显示替代解决办法
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品原创,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究。

WPF控件不能实时刷新显示替代解决办法


最近WPF开发仪表盘,用代码修改了最大最小值,仪表盘控件不实时刷新,刻度没变化,就出现了问题:WPF控件不能实时刷新显示,后来研究了下,找到了WPF控件不能实时刷新显示替代解决办法。

仪表盘的布局xaml如下:

<my:Gauge Grid.Row="0" Width="180" Height="180" Name="deviceDashboard1" 
HorizontalAlignment="Left" VerticalAlignment="Top" Radius="90" PointerLength="45"
PointerCapRadius="12" PointerThickness ="8" ImageSource="/Imgs/windowslogo.png"
ImageSize="20,20" ImageOffset="-20" RangeIndicatorRadius="65"
ScaleRadius="58" ScaleStartAngle="120" ScaleSweepAngle="300"  
ScaleLabelRadius="40" ScaleLabelSize="40,20" ScaleLabelFontSize="8"
ScaleLabelForeground="LightGray" RangeIndicatorThickness="8"
RangeIndicatorLightRadius="5" RangeIndicatorLightOffset="50"
DialTextOffset="25" DialText="Black" DialTextColor="Black"                                     
MinValue="0" MaxValue="240" MajorDivisionsCount="10"
MinorDivisionsCount="2" OptimalRangeStartValue="80"
OptimalRangeEndValue="120" DangerRangeStartValue="180"
CurrentValue="0"
MajorTickSize="10,3"
MinorTickSize="3,1"
MajorTickColor="LightGray"
MinorTickColor="LightGray"
GaugeBackgroundColor="Black"

/>

上面是在xaml里指定好的,我用控件名设置属性后,不能实时刷新,看不到属性新值的表现。Winform里有Invalidate或Refresh,我试了三个函数调用都不行:InvalidateArrange、InvalidateVisual和InvalidateMeasure。

没办法,只能用动态添加控件办法,先Children.Clear(),再Children.Add,新控件肯定会刷新,这样就避免了问题。

不过,这是替代办法,应该不是WPF的正解,在MSDN里原话:“布局更新一般在布局系统) 确定的一次异步 (。 元素可能不会立即反映对影响元素大小 (调整的属性的更改,例如 Width) ”。我用的控件不是WPF的控件,可能在布局支持上不太完美吧。

另外,布局方面的知识点:“如果渲染大小已更改或设置了RenderingInvalidated标志,则UIElement调用UIElement.Arrange()。在控件中重写的OnRender()。在那里,您可以放置渲染说明”。意思和上段类似,但是RenderingInvalidated的资料很少。

如果谁有更好的方法,欢迎联系。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内