我有一个文本框,用户输入的数字将用作旋转图像的角度。有没有办法将xaml中的数字转换为负数?因此,如果用户输入50,我希望图像旋转-50度而不是+50。我宁愿不在代码隐藏中去做。代码如下:
<TextBox x:Name="testing" />
<Image Source="aaaa.png" x:Name="thisimage" >
<Image.LayoutTransform>
<RotateTransform CenterX="0.5" CenterY="0.5" Angle="{Binding Path=Text , ElementName=testing, UpdateSourceTrigger=PropertyChanged}" />
</Image.LayoutTransform>
</Image>
答案 0 :(得分:2)
这将是一个纯粹的XAML解决方案:
<Image.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="-1"/>
<RotateTransform CenterX="0.5" CenterY="0.5"
Angle="{Binding Path=Text, ElementName=testing,
UpdateSourceTrigger=PropertyChanged}" />
<ScaleTransform ScaleX="-1"/>
</TransformGroup>
</Image.LayoutTransform>
我仍然建议使用绑定转换器。
答案 1 :(得分:1)
请尝试以下代码。
首先创建实现IValueConverter:
public class AngleConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var angle = (int)value;
if (angle != null)
{
return -angle;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
XAML:
<TextBox x:Name="testing" />
<Image Source="aaaa.png" x:Name="thisimage" >
<Image.LayoutTransform>
<RotateTransform CenterX="0.5" CenterY="0.5" Angle="{Binding Path=Text , ElementName=testing, Converter={StaticResource angleConverter} UpdateSourceTrigger=PropertyChanged}" />
</Image.LayoutTransform>
添加对转换器的引用:
xmlns:cr="using:[project].Converters"
不要忘记添加资源:
<UserControl.Resources>
<cr:AngleConverter x:Key="angleConverter"/>
</UserControl.Resources>