我有重写OnRender方法的自定义控件。我想使对任何依赖属性更改事件的控制无效。当父类型的属性发生变化时更新也很好。有什么方法可以使用内置功能做到这一点?
编辑:
我发现我可以将“影响渲染”用于依赖属性,并在 OnLayoutUpdated 上检查附加信息或私有属性(如果有)。
FrameworkPropertyMetadata.AffectsRender
和:
private void OnLayoutUpdated(object sender, EventArgs e)
{
int result = (CornerRadius != null ? CornerRadius.GetHashCode() : 0);
result = (result * PrimeHashNumber) ^ (IsSelected.GetHashCode());
result = (result * PrimeHashNumber) ^ (IsReadCornerRadiusFromConfig.GetHashCode());
result = (result * PrimeHashNumber) ^ (IsReadBorderThicknessFromConfig.GetHashCode());
result = (result * PrimeHashNumber) ^ (SelectedColor!=null?SelectedColor.GetHashCode():0);
result = (result * PrimeHashNumber) ^ (Background != null ? Background.GetHashCode() : 0);
result = (result * PrimeHashNumber) ^ (BorderBrush != null ? BorderBrush.GetHashCode() : 0);
if (lastHash != result)
{
this.InvalidateVisual();
lastHash = result;
}
}