6

シンプルなスライダーと無地のラベルがあります。ラベルのコンテンツはスライダーの値にバインドされており、正常に動作します。スライダーを移動すると、ラベルのコンテンツが変更されます (例: 23.3983928394 、50.234234234 など)。

int値に丸めたいと思います。1,2,10....100。しかし、コンバーターを使用しようとすると、 「ivalueconverter は文字列からの変換をサポートしていません」というメッセージが表示されます。

スライダーの値をコンバーターで 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}" />

これは私のstringconverterクラスです

public class MyConvertor: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        //How to convert string to int?
    }
4

4 に答える 4

19

コンバーターを作成する代わりに、ここでStringFormatプロパティを使用できます。#double 値は、指定された形式により int に丸められます。

<TextBlock Text="{Binding ElementName=mySlider, Path=Value, StringFormat={}{0:#}}"/>

ラベルを保持したい場合は、TextBlock を使用する代わりに、代わりにContentStringFormatContentを型のテイクとして使用できますobject

<Label Content="{Binding ElementName=mySlider, Path=Value}" ContentStringFormat="{}{0:#}" />
于 2013-07-11T22:06:26.513 に答える
2

ラベルの ContentStringFormat プロパティを使用できます

<Label Content="{Binding ElementName=Slider, Path=Value}" 
   ContentStringFormat="{}{0:N0}" />
于 2015-08-27T17:28:39.077 に答える