iAt*_*_it 5 .net c# wpf visual-studio
我有一个简单的滑块和一个普通的标签.标签的内容绑定到滑块的值,它可以正常工作 - 当您移动滑块时,标签的内容会发生变化,例如23.3983928394,50.234234234等等
我想把它四舍五入到int值.1,2,10 .... 100.但是当我尝试使用转换器时,我得到 "ivalueconverter不支持从字符串转换".
如何将滑块的Value转换为转换器中的int?
谢谢
这是我的 XAML
<Grid.Resources>
<local:MyConvertor x:Key="stringconverter" />
</Grid.Resources>
<Slider x:Name="mySlider" Height="50" Width="276" Maximum="100"/>
<Label Content="{Binding ElementName=mySlider, Path=Value, Converter=stringconverter}" />
Run Code Online (Sandbox Code Playgroud)
这是我的stringconverter班级
public class MyConvertor: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//How to convert string to int?
}
Run Code Online (Sandbox Code Playgroud)
key*_*rdP 17
您可以在此处使用StringFormat属性,而不是创建转换器.由于#指定的格式,double值将四舍五入为int .
<TextBlock Text="{Binding ElementName=mySlider, Path=Value, StringFormat={}{0:#}}"/>
Run Code Online (Sandbox Code Playgroud)
如果你想保留的,而不是使用一个TextBlock标签,你可以使用ContentStringFormat,而不是作为Content在需要object的类型.
<Label Content="{Binding ElementName=mySlider, Path=Value}" ContentStringFormat="{}{0:#}" />
Run Code Online (Sandbox Code Playgroud)
回答问题:抛出错误的原因是
Converter=stringconverter
Run Code Online (Sandbox Code Playgroud)
它一定要是
Converter={StaticResource stringconverter}
Run Code Online (Sandbox Code Playgroud)
在转换器中,您不是将 string 转换为 int,而是将double ( Slider.Value)转换为 object ( Label.Content),对象也可以是字符串。例如
return ((double)value).ToString("0");
Run Code Online (Sandbox Code Playgroud)
或者
return Math.Round((double)value);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11074 次 |
| 最近记录: |