在 xaml 中将 int 文本框输入转换为负数?
Convert int textbox input to negative in xaml?
我有一个文本框,用户可以在其中输入一个数字,该数字将用作旋转图像的角度。有没有办法将 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>
试试下面的代码。
首先创建实现 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>
这将是一个纯粹的 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>
我仍然建议使用绑定转换器。
我有一个文本框,用户可以在其中输入一个数字,该数字将用作旋转图像的角度。有没有办法将 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>
试试下面的代码。
首先创建实现 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>
这将是一个纯粹的 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>
我仍然建议使用绑定转换器。