自定義控件,應用樣式後,提示綁定異常:
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,這個雖然不報錯了,但綁定沒有觸發(不知道啥原因,有知道的也指導下)