OnRenderメソッドをオーバーライドしたカスタム コントロールがあります。依存関係プロパティの変更イベントに対する制御を無効にしたいと考えています。また、親型のプロパティが変更されたときに更新するとよいでしょう。組み込み機能でこれを行う方法はありますか?
編集:
依存関係プロパティに「affect render」を使用し、追加情報またはプライベート プロパティがある場合は 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;
}
}