2013-10-30 40 views
1

请注意,此问题与数据绑定中的类型转换或格式无关。如何转换数据绑定的值

我有一个小的应用程序,在画布上绘制一个矩形。用户有一个UI来输入矩形的宽度。该值存储在user.config中。问题在于最终用户想要以英寸或毫米为单位输入宽度,但在WPF中,矩形的宽度是以独立显示像素(DIP)测量的。因此,如果他使用英寸,我必须将用户的输入乘以96,如果他使用毫米,则乘以3.84。我如何实现这一点,并仍然利用数据绑定。

这是我的数据绑定矩形的宽度当前XAML

<Canvas x:Name="canvasPanel" > 
    <Rectangle x:Name="rect" Width="{Binding Default.Width, Mode=OneWay, Source={StaticResource Settings}}"/> 
</Canvas> 

这是我的数据绑定用户的输入电流XAML

<TextBox Text="{Binding Default.Width, Mode=TwoWay, Source={StaticResource Settings}}"/> 

当然,我不会忘记申报App.xaml中的静态资源

<Application x:Class="DefectSim.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:properties="clr-namespace:DefectSim.Properties" 
     StartupUri="MainWindow.xaml"> 
    <Application.Resources> 
     <properties:Settings x:Key="Settings"/> 
    </Application.Resources> 
</Application> 

谢谢

回答

0

创建绑定converter,该绑定将处理从用户配置中提取信息并提供正确值的要求。

如果需要使用multibinding绑定来允许更多的值传递到转换器。

+0

转换器足以解决我的问题。但是,当我应该使用多重绑定而不是简单的转换器时,能否给我一点细节? – LxL

+0

@LxL在需要发送用户选择的情况下使用多重绑定,例如从转换器可能无法使用的Xaml中进行选择。我有这样一种需求,即转换器可以摆脱这种选择并返回其他值。 – OmegaMan

+0

谢谢,这对我有意义。 – LxL

相关问题