文档介绍:四堕的应用可以帮助我们实现许多基于图形界面方面的功能实现。不过在实际使用中, 开发人员往往都追求更高性能的使用。在这里就介绍一下有关WPF性能的提高方法。
全面介绍WPF UI自动化技术
深入探讨WPF UI自动化模型
全面探讨WPFpendencyObject/DependencyProperty高。注意这里指的是访问,不要和前面的绑定 混淆了。但是,把属性注册为DependencyProperty会有很多的优点:比如继承、数据绑 定和Styleo所以有时候我们可以在实现Dependencyproperty的时候,利用缓存机制来 加速访问速度:看下面的缓存例子:
public static
readonly Dependencyproperty MagicStringProperty = DependencyProperty. Register("MagicString", typeof (string),
typeof (MyButton) , new Property-Metadata (new PropertylnvalidatedCallback(OnMagic StringPropertyInvalidated),new GetValue Override(MagicStringGetValueCallback)));
private static void OnMagicString PropertyInvalidated(DependencyObject d) (
//将缓存的数据标识为无效
((MyButton)d)._magicStringValid = false;
}
private static object MagicStringGet ValueCallback (Dependency-Object d) (
//调用缓存的访问器来获取值
return ((MyButton)d).MagicString;
}
//私有的CLR访问器和本地缓存public string MagicString {
get (
//在当前值无效时,获取最新的值保存起来if
(I_magicStringValid) (
_magicString = (string)GetValueBase (MagicStringProperty);
_magicStringValid = true;
}
return _magicString; }
set { SetValue(MagicString
Property, value);
}
}
private string _magicString;
private bool _magicStringValid;
另外,因为注册的DependencyProperty在默认是不可继承的,如果需要继承特性,
也会降低DependencyProperty值刷新的效率。注册DependencyProperty属性时,应 该把DefaultValue传递给Register方法的参数来实现默认值的设置,而不是在构造函数中 设置。
5、 使用元素Text Flow和TextBlock时,如果不需要TextFlow的某些特性,就应该考 虑使用TextBlock