赞
踩
今天在写mes的管理小软件时发现,读取数据库的文件并且进行显示的时候需要进行一些转换,并且,在界面缩放的时候也需要进行改变,用margin显示不了。使用了tabcontrol控件,把tabcontrol的控件设置为grid的background四边缩进30的显示。 这就需要进行转换,获取到background的实际大小,再减去60就获得了新的tabcontontrol的显示大小。 界面的参数类型是bool型的,我希望显示在listview中用文字运行中或者未运行来进行显示,也需要转换器。 网上查了一些资料,要么是多值的转换IMultiValueConverter ,要么是一个程序中只使用了一个的IValueConverter。不知道为什么我使用了2个IValueConverter之后会出现错误。 总是说有一个IValueConverter没有定义,或者定义冲突,语句什么的都没错误。 后来我修改了一下做法。 就实现对应的功能了。
IValueConverter 的编写:
把几个IValueConverter 函数都写入App.xaml.cs文件中。本例程用了2个转换器。在App的class外添加2个转换器类。
- public class MachineStateConvertor : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if ((bool)value)
- return "运行中";
- else
- return "未运行";
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if ((string)value == "运行中")
- return true;
- else
- return false;
- }
- }
-
- public class MinusHundredConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- return ((double)value) - 60;
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotSupportedException("Cannot convert back");
- }
- }
在所要使用的窗口的xaml中使用。
例程中。使用之前,在<windows>中先包含转换器所在的空间,然后在 <Window.Resources></Window.Resources>之间插入转换器的定义。 之后就可以在<grid>之间使用了。
例程如下:<MainWindow.xaml>中。
先包含空间:
xmlns:local="clr-namespace:MesManage"
在resources中定义转换器
- <!--定义转换器-->
-
- <local:MinusHundredConverter x:Key="LengthCVT"/>
在窗体编程中使用转换器:
- <TabControl x:Name="tabControl" TabStripPlacement="Left"
- HorizontalAlignment="Left"
- Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Border}},
- Path=ActualWidth, Converter={StaticResource LengthCVT}, Mode=OneWay}"
- Height="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Border}},
- Path=ActualHeight, Converter={StaticResource LengthCVT}, Mode=OneWay}" >
第二个转换器使用在pages文件夹下的PageLineInfo窗口中
包含空间
xmlns:src ="clr-namespace:MesManage"
定义转换器:
- <!--定义转换器-->
- <src:MachineStateConvertor x:Key="MachCVT"/>
使用转换器把bool类型转成字符显示状态:
<GridViewColumn Header="产线状态" DisplayMemberBinding="{Binding Path = isRunning,Converter={StaticResource MachCVT}}" >
这样子就不会出现问了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。