Silverlight 4常用StringFormat格式总结

本文介绍了Silverlight4中字符格式化的多种应用场景,包括使用StringFormat属性进行字符串、日期及数字格式化的具体方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Silverlight项目中,经常会根据需求的不同,提供不同的字符格式到客户端。这篇文章总结了目前Silverlight 4常用StringFormat绑定字符格式,方便大家在随后的开发中调用参考。
  

Silverlight项目中,经常会根据需求的不同,提供不同的字符格式到客户端。这篇文章总结了目前Silverlight 4常用StringFormat绑定字符格式,方便大家在随后的开发中调用参考。

 
早期的格式转换方法
Silverlight 4 之前的版本,通常修改字符格式是通过实现 IValueConverter 接口,在 IValueConverter 接口中包含有两个方法:
1. Convert 在绑定源数据传送到客户端显示前,转换修改数据;
2. ConvertBack ,在目标数据传送到绑定源数据前,转换修改数据,该方法仅被用于 “TwoWay” 绑定模式;
例如,根据布尔型判断实现控件是否显示在客户端,下面是一个简单的转换代码,通过实现 IValueConverter ,判断控件 Visibility 属性值。
public class VisibilityConverter : IValueConverter
{
public object Convert(object value,Type targetType,object parameter,CultureInfo culture)
{
bool visibility = (bool)value;
return visibility ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value,Type targetType,object parameter,CultureInfo culture)
{
Visibility visibility = (Visibility)value;
return (visibility == Visibility.Visible);
}
}
 
Silverlight 4 StringFormat 属性
Silverlight 4 中,数据绑定 SDK 提供一个 “StringFormat” 的属性,该属性允许开发人员自由定义输出字符格式,例如, DataPicker 控件,该控件提供 SelectedDateFormat 属性,控制其输出格式 短格式 长格式
 
SelectedDateFormat="Short", “ 默认

 
SelectedDateFormat="Long"
 

 
 
而如果需要输出 “April 01, 2011” 格式,则无法使用 SelectedDateFormat 控制其格式,这时可以使用 StringFormat 属性完成需求。
<toolkit:DatePicker SelectedDate="{Binding DemoDate,Mode=TwoWay, StringFormat='MMM d, yyyy'}" />
 

 
 
再例如,早期实现一段文字绑定信息需要按照以下格式操作:
<TextBlock Text=” 当前登录用户 : ”/>
<TextBlock Text=“{Binding Name}”/>
输出 当前登录用户 Jv9
 
Silverlight 4 中使用 StringFormat 属性,可以简单的实现如下 :
<TextBlock Text=“{Binding Name, StringFormat=’ 当前登录用户 : \{0\}’}”>
这样实现简单而又方便。
 
对于 StringFormat 属性的使用方法还有很多,下面使用实例演示常用的属性:
 
 

 
 
<Grid x:Name="LayoutRoot">
<ScrollViewer x:Name="PageScrollViewer" Style="{StaticResource PageScrollViewerStyle}">
<StackPanel Orientation="Horizontal">
<StackPanel x:Name="ContentStackPanel">
<TextBlock FontSize="16" TextWrapping="Wrap" Text="StringFormat
和字符串格式 " Margin="8"/>
<Border BorderBrush="LightGray" BorderThickness="1" Width="300" Margin="5" HorizontalAlignment="Left">
<StackPanel Orientation="Vertical" Margin="5" >
<TextBox x:Name="txtSource" Width="125" HorizontalAlignment="Left"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat='
正在输入  &quot;\{0\}&quot;." FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock Text="{Binding Text, ElementName=txtSource, StringFormat='
正在输入  &quot;\{0\}&quot;.'}" TextWrapping="Wrap" Margin="0,0,0,4"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat=\{0\,20\}" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock Text="{Binding Text, ElementName=txtSource, StringFormat=\{0\,20\}}" TextWrapping="Wrap" Margin="0,0,0,4" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=\{0\,-20\}" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock Text="{Binding Text, ElementName=txtSource, StringFormat=\{0\,-20\}}" TextWrapping="Wrap" Margin="0,0,0,4"/>
</StackPanel>
</Border>

<StackPanel x:Name="DatePanel">
<TextBlock Text="StringFormat
和日期格式 " Margin="8" FontSize="16" />
<Border BorderBrush="LightGray" BorderThickness="1" Width="300" Margin="5" HorizontalAlignment="Left">
<StackPanel DataContext="{StaticResource SampleDate}">
<TextBlock TextWrapping="Wrap" Text="StringFormat=f" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=f}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=F" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=F}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=g" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=g}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=G" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=G}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=m" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=m}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=y" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=y}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=t" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=t}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=T" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=T}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=u" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=u}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=o" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=o}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=MM/dd/yy" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=MM/dd/yy}" Margin="8,0"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat=MMMM dd\, yyyy g" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=MMMM dd\, yyyy g}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=hh:mm:ss.fff tt" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=hh:mm:ss.fff tt}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:r\}" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat=\{0:r\}}" Margin="8,0" />
<TextBlock TextWrapping="Wrap" Text="StringFormat='MMM d, yyyy'" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBlock TextWrapping="Wrap" Text="{Binding CurrentDateTime, StringFormat='MMM d, yyyy'}" Margin="8,0" />
</StackPanel>
</Border> 
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical" >
<TextBlock Text="StringFormat
和数字演示 " Margin="8" FontSize="16"/>
<Border BorderBrush="LightGray" BorderThickness="1" Width="300" Margin="5" HorizontalAlignment="Left">
<StackPanel Orientation="Vertical" Margin="5">
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="18"/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto" MinWidth="28"/>
</Grid.ColumnDefinitions>
<TextBlock Text="1" HorizontalAlignment="Left" d:LayoutOverrides="Height" />
<TextBlock Text="100,000" d:LayoutOverrides="Width, Height" Grid.Column="2" Margin="0" />
<Slider x:Name="BigNumSlider" Margin="0" d:LayoutOverrides="Height" Grid.ColumnSpan="3" Grid.Row="1" Maximum="100000" Minimum="1" Value="50000"/>
</Grid>
<TextBlock TextWrapping="Wrap" Text="StringFormat=c" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat=c}" Margin="8,0"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat=
目前拥有现金  \{0:C0\}" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat=
目前拥有现金  \{0:C0\}}" Margin="8,0"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat=e" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat=e}" Margin="8,0"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:E4\}" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat=\{0:E4\}}" Margin="8,0"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat=n" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat=n}" Margin="8,0"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:N0\}" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat=\{0:N0\}}" Margin="8,0"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat='###,###.##'" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat='###,###.##'}" Margin="8,0" />
</StackPanel>
</Border>
<Border BorderBrush="LightGray" BorderThickness="1" Width="300" Margin="5" HorizontalAlignment="Left">
<StackPanel Orientation="Vertical" Margin="5">
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="18"/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto" MinWidth="28"/>
</Grid.ColumnDefinitions>
<TextBlock Text="-1" HorizontalAlignment="Left" d:LayoutOverrides="Height" />
<TextBlock Text="1" d:LayoutOverrides="Width, Height" Grid.Column="2" Margin="0" />
<Slider x:Name="BigNumSlider1" Margin="0" d:LayoutOverrides="Height" Grid.ColumnSpan="3" Grid.Row="1" Maximum="1" Minimum="-1" Value="0.2" LargeChange="0.1" SmallChange="0.01"/>
</Grid>
<TextBlock TextWrapping="Wrap" Text="StringFormat=n" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider1, Mode=TwoWay, StringFormat=n}" Margin="8,0"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:N4\}" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider1, Mode=TwoWay, StringFormat=\{0:N4\}}" Margin="8,0"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat=p" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider1, Mode=TwoWay, StringFormat=p}" Margin="8,0"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:P0\}" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider1, Mode=TwoWay, StringFormat=\{0:P0\}}" Margin="8,0"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:E5\}" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider1, Mode=TwoWay, StringFormat=\{0:E5\}}" Margin="8,0"/>
<TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:C3\}" FontWeight="Bold" Margin="0,4,0,2"/>
<TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider1, Mode=TwoWay, StringFormat=\{0:C3\}}" Margin="8,0"/>
</StackPanel>
</Border>
</StackPanel>

</StackPanel>
</ScrollViewer>
</Grid>

转载于:https://www.cnblogs.com/zhengwen/archive/2012/03/30/2424612.html

基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值