0

みなさん、こんにちは。私のアプリケーションが最終段階にあり、ほぼ完成しているとき、測定単位を帝国またはメートル法にするかどうかを設定できる設定ページが必要です。

私が今抱えている問題は、次のように異なるスライダーにバインドされている20個のテキストブロックがあることです:

<TextBlock x:Name="spring" Text="Spring" />
<TextBlock Text="{Binding Path=Value, Mode=TwoWay,StringFormat='0.00 inch', ElementName=springslider}" Margin="300,-21,0,0" x:Name="springData" />
<Slider Name="springslider" Background="{StaticResource PhoneAccentBrush}" Maximum="1" Minimum="0" SmallChange="5" />

テキストブロックのテキスト バインディングで、StringFormat を 0.00 インチに設定しました。メトリックを選択した場合は、stringformat を 0.0 mm に変更します。

何か案は?

4

1 に答える 1

1

値を受け取り、設定した設定プロパティに応じて異なる値を返す文字列コンバーター クラスを作成します。次のようなものです。

public class StringFormatConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (Settings.FormatSetting == FormatSettings.Metric)
            return (string)value + " mm";
        else return (string)value + " inch";
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return value;
    }
}

次に、コンバーターをリソース ディクショナリの 1 つに追加します。

<common:StringFormatConverter x:Key="StringFormatConverter" />

そして、次のようにバインドするときに使用します。

<TextBlock Text="{Binding Path=Value, Mode=TwoWay, Converter={StaticResource StringFormatConverter}, ElementName=springslider}" Margin="300,-21,0,0" x:Name="springData" />
于 2012-09-23T18:21:17.273 に答える