在xaml中将int文本框输入转换为负数?

时间:2015-02-16 17:50:20

标签: c# wpf xaml textbox converter

我有一个文本框,用户输入的数字将用作旋转图像的角度。有没有办法将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>

2 个答案:

答案 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>