WP8 -绑定浮点值到字符串转换的值
本文关键字:字符串 转换 绑定 WP8 | 更新日期: 2023-09-27 18:12:45
我有几个仪表在我的应用程序,我不知道如何添加一个转换器到文本绑定。我在msdn上读了几个指南,但我没有设法弄清楚(我已经为WP8编码了几个星期)。
这是一个量规:
<gauges:MarkerGaugeIndicator Value="0"
gauges:LinearGaugeRange.IndicatorOffset="35"
x:Name="GaugeBarValore"
IsAnimated="True">
<gauges:MarkerGaugeIndicator.MarkerTemplate>
<DataTemplate>
<Grid Width="73" Height="35" UseLayoutRounding="False" d:LayoutRounding="Auto" Margin="10,-2,0,0">
<TextBlock x:Name="GaugeBarPercent" Text="{Binding}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="20"
FontWeight="Thin" Margin="6,4,32,4" Width="35"/>
<Grid.RenderTransform>
<CompositeTransform Rotation="90" TranslateX="49" TranslateY="12" />
</Grid.RenderTransform>
</Grid>
</DataTemplate>
</gauges:MarkerGaugeIndicator.MarkerTemplate>
</gauges:MarkerGaugeIndicator>
绑定本身可以工作,但是当值从一个四舍五入值移动到另一个四舍五入值时,我可以看到很多十进制数字。我想添加一个像这样的转换器:
private String double2String(double valore)
{
return Convert.ToString(Math.Round(valore)) + "%";
}
我只是不知道把这个方法放在哪里,以及如何把它作为一个转换器添加到绑定中。
谢谢你的帮助!:)塞尔吉奥。
创建一个类来保存实现IValueConverter接口的Converter方法,示例类如下。你必须实现Convert和ConvertBack方法。
public class DoubleToString : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Math.Round((double)value).ToString() + "%";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return double.Parse(value as string);
}
}
然后将名称空间添加到XAML页面。
xmlns:convert="clr-namespace:Your_project_name"
接下来将转换器作为资源类型i添加到XAML页面。
<phone:PhoneApplicationPage.Resources>
<convert:DoubleToString x:Key="DoubleConvert" />
</phone:PhoneApplicationPage.Resources>
x:Key值是我们将在绑定语句中调用的名称。
然后执行数据绑定。我有一个简单的滑块和一个文本块,滑块的值绑定到textblocks文本属性
<StackPanel>
<Slider Name="slider" Maximum="100" Minimum="0" />
<TextBlock Text="{Binding Value, ElementName=slider, Converter={StaticResource DoubleConvert}}" />
</StackPanel>
将此转换器定义为父视图中的资源
<UserControl.Resources>
<local:double2String x:Key="convertDouble" />
</UserControl.Resources>
并添加到绑定
<TextBlock x:Name="GaugeBarPercent" Text="{Binding, Converter={StaticResource convertDouble}}"
不要忘记将定义转换器的命名空间导入到视图
xmlns:local="clr-namespace:YOUR_NAMESPACE"
更简单的方法是使用StringFormat。这样的:
<Label Text="{Binding Path=SomeProperty, StringFormat='{0:F2}%' }"/>