如何转换数据绑定的值

时间:2013-10-30 16:05:42

标签: c# wpf xaml data-binding

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

我有一个小应用程序,它在画布上绘制一个矩形。用户可以使用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>

由于

1 个答案:

答案 0 :(得分:0)

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

如果需要,请使用multibinding绑定以允许将更多值传递到转换器。