未在WPF的资源字典中更新RenderTransform
我想在资源字典中实现一个旋钮,它可以接收图像作为模板。 当我在同一个库中实现它时,它运行良好: knob.xaml:未在WPF的资源字典中更新RenderTransform,wpf,xaml,Wpf,Xaml,我想在资源字典中实现一个旋钮,它可以接收图像作为模板。 当我在同一个库中实现它时,它运行良好: knob.xaml: <UserControl x:Class="SwitchesLibrary.Knob" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="96" Width="96"
<UserControl x:Class="SwitchesLibrary.Knob"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="96" Width="96" x:Name="This">
<Grid>
<Image RenderTransformOrigin=".5,.5" Source="Images/Knobs/Knob.png" Height="96" Width="96" >
<Image.RenderTransform>
<RotateTransform Angle="{Binding Angle, ElementName=This}"/>
</Image.RenderTransform>
</Image>
</Grid>
但当我将其移动到资源字典时:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SwitchesLibrary">
<Style TargetType="local:Knob">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:Knob">
<Border BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Image
x:Name="image"
Source="{TemplateBinding KnobImage}"
RenderTransformOrigin=".5,.5"
Stretch="Fill"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
<Image.RenderTransform>
<RotateTransform Angle="{TemplateBinding Angle}"/>
</Image.RenderTransform>
</Image>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
它似乎工作正常(角度值已正确更新),但旋钮图像未旋转。为什么?尝试将
模板绑定
替换为相对资源
绑定
<RotateTransform Angle="{Binding Angle, RelativeSource={RelativeSource AncestorType=local:Know}, Mode=OneWay}"/>
{TemplateBinding}
是绑定的优化版本,但并非在所有情况下都能很好地工作。尝试将TemplateBinding
替换为相对资源
绑定
<RotateTransform Angle="{Binding Angle, RelativeSource={RelativeSource AncestorType=local:Know}, Mode=OneWay}"/>
{TemplateBinding}
是绑定的优化版本,但并非在所有情况下都能很好地工作。在某些情况下,即使是{RelativeSource TemplatedParent}
也能工作,而TemplateBinding
则不能(例如在setter中),即使一个基本上是另一个的缩写。但不确定它在这里是否有效。在某些情况下,即使是{relativesourcetemplatedparent}
也可以工作,而TemplateBinding
则不能(例如,在setter中),即使一个基本上是另一个的缩写。不过,我不确定它在这里是否管用。