在XAML中将控件从MM转换为英寸

时间:2014-01-27 21:53:49

标签: wpf xaml

我的XAML中有很多控件 TextBlock:TextBox。

例如:

XSIZE(毫米):25.4

YSIZE(毫米):50.8 等

现在,当用户点击选项以使用英制单位时,我想将所有textBlocks + textBox更改为

XSIZE(在):1

YSIZE(在):2

最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

尝试使用Converters。创建MMInch转换器,并在用户输入特定值的值时使用该转换器更改值。

转换器的示例用法。 您必须在视图资源下为要使用转换器的控件定义静态资源

<强> MainWindow.xaml

<Window.Resources>
    <spikes:Convertaaa x:Key="Convertaaa" />
</Window.Resources>
<ComboBox x:Name="OptionsToChoose"/>
<TextBox>
    <TextBox.Text>
        <MultiBinding Converter="{StaticResource Convertaaa}">
            <Binding ElementName="OptionsToChoose" Path="SelectedValue"/>
            <Binding RelativeSource="{RelativeSource Self}" Path="Text"/>
        </MultiBinding>
    </TextBox.Text>
</TextBox>

<强> Converter.cs

public class Convertaaa : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        //Implement conversion here. values[0] will give you the selected option values[1] will give you the value to convert, then do a return
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

这假设您确实知道WPF和MVVM中的Bindings模式。如果你在代码后面做,那么你可能想要连接到TextChanged的{​​{1}}并实例化一个新的TextBox类并调用Converter方法并设置Convert的{​​{1}}属性。