1
我有一個UserControl,HorizontalContentAlignment
的默認值是HorizontalAlignment.Stretch
。在構造函數中,我將它設置爲HorizontalAlignment.Left
。覆蓋UserControl中的DependencyProperty
當我使用用戶控件,並給它的屬性HorizontalAlignment.Right
在XAML,則該值被使用,即我不能重寫在構造函數中的值。
我可以覆蓋OnApplyTemplate
,OnRender
或Loaded
事件中的屬性。
有這些我應該更喜歡嗎?
基本上我想避免有人可以改變usercontrols HorizontalContentAlignment
。
我接受它,在'Coerce'是正確的單詞使用。然而,它是更多的代碼,然後例如將它添加到'OnApplyTemplate'。有什麼理由更喜歡脅迫後者? – Gerard
只要屬性值發生變化,就會調用強制回調。您不必通過調用來調用代碼,以在任何可能的地方或任何地方覆蓋用戶值(記住可以通過綁定或動畫更改屬性):這是一種通用解決方案。另外,強制意味着用戶將始終看到屬性的實際強制值(Stretch)。此外,強制不會覆蓋可能已在屬性上設置的任何綁定,並且如果需要,用戶指定的值將被存儲以備將來使用。 –