WPF 自定義控件依賴屬性綁定異常

自定義控件,應用樣式後,提示綁定異常:

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Angle; DataItem=null; target element is 'RotateTransform' (HashCode=21704116); target property is 'Angle' (type 'Double')

我這邊是新建一個自定義控件SelectionBox,通過DefaultStyleKeyProperty.OverrideMetadata定義樣式模板,自動查找全局對應的樣式。

上面的Angle依賴屬性,是有默認值的。爲何報錯?我們看下Xaml中ControlTemplate相應模塊代碼:

1     <Grid.RenderTransform >
2         <RotateTransform Angle="{Binding Path=Angle,RelativeSource={RelativeSource TemplatedParent}}"/>
3     </Grid.RenderTransform>

貌似沒有啥問題。這個綁定異常,只有首次加載纔有。

嘗試了下,給RotateTransform 添加x:Name命名後,竟然神奇的解決,不報異常了

1     <Grid.RenderTransform >
2         <RotateTransform x:Name="Rotate" Angle="{Binding Path=Angle,RelativeSource={RelativeSource TemplatedParent}}"/>
3     </Grid.RenderTransform>

這是WPF的BUG?有了解的,指導下

另外,中間也嘗試改成TemplateBinding,這個雖然不報錯了,但綁定沒有觸發(不知道啥原因,有知道的也指導下)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章