繁体   English   中英

WP8-将值与浮点型绑定到字符串转换

[英]WP8 - Binding a value with a float to String conversion

我的应用程序中有两个仪表,我不知道如何在文本绑定中添加转换器。 我在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方法,Example类如下。 您必须实现方法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 Text属性

<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}%' }"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM