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;
    }
}

然后将转换器添加到您的资源字典之一:

<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 回答