我的XAML中有很多控件 TextBlock:TextBox。
例如:
XSIZE(毫米):25.4
YSIZE(毫米):50.8 等
现在,当用户点击选项以使用英制单位时,我想将所有textBlocks + textBox更改为
XSIZE(在):1
YSIZE(在):2
等
最好的方法是什么?
答案 0 :(得分:2)
尝试使用Converters
。创建MM
到Inch
转换器,并在用户输入特定值的值时使用该转换器更改值。
转换器的示例用法。 您必须在视图资源下为要使用转换器的控件定义静态资源
<强> 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}}属性。