当前位置:   article > 正文

wpf 数据转换器Convert的基本使用_wpfconvert转换器放在哪

wpfconvert转换器放在哪

使用场景

        数据实体中常有用INT值属性保存对应该枚举的数据,在界面显示时想显示枚举的描述时使用。

效果

示例

        实体

  1. /// <summary>
  2. /// 点位表 实体
  3. /// </summary>
  4. [MfTable("Point")]
  5. public class PointModel : BaseModelExtendIdAndName<int>
  6. {
  7. /// <summary>
  8. /// 编号
  9. /// </summary>
  10. public int No { get; set; }
  11. /// <summary>
  12. /// X轴坐标
  13. /// </summary>
  14. public decimal PointX { get; set; }
  15. /// <summary>
  16. /// Y轴坐标
  17. /// </summary>
  18. public decimal PointY { get; set; }
  19. /// <summary>
  20. /// 另外增加的修正值X
  21. /// </summary>
  22. public decimal AddX { get; set; }
  23. /// <summary>
  24. /// 另外增加的修正值Y
  25. /// </summary>
  26. public decimal AddY { get; set; }
  27. /// <summary>
  28. /// 类型[焊接点位:0,相机点位:1,标定点位:2,轴点位:3] PointTypeEnum
  29. /// </summary>
  30. public int Type { get; set; }
  31. /// <summary>
  32. /// 配方ID
  33. /// </summary>
  34. public int FormulaId { get; set; }
  35. /// <summary>
  36. /// 轴卡 ID
  37. /// </summary>
  38. public int AxisId { get; set; }
  39. /// <summary>
  40. /// 获取X轴总值
  41. /// </summary>
  42. /// <returns></returns>
  43. public decimal GetPointXSum()
  44. {
  45. return PointX + AddX;
  46. }
  47. /// <summary>
  48. /// 获取Y轴总值
  49. /// </summary>
  50. /// <returns></returns>
  51. public decimal GetPointYSum()
  52. {
  53. return PointY + AddY;
  54. }
  55. /// <summary>
  56. /// 获取类型描述
  57. /// </summary>
  58. /// <returns></returns>
  59. public string GetPointTypeDesc()
  60. {
  61. return ((PointTypeEnum)Enum.Parse(typeof(PointTypeEnum), this.Type.ToString())).GetEnumDesc();
  62. }
  63. }
  64. /// <summary>
  65. /// 点位类型
  66. /// </summary>
  67. public enum PointTypeEnum
  68. {
  69. /// <summary>
  70. /// 焊接点位
  71. /// </summary>
  72. [Description("焊接点位")]
  73. WeldPoint = 0,
  74. /// <summary>
  75. /// 相机点位
  76. /// </summary>
  77. [Description("相机点位")]
  78. CameraPoint = 1,
  79. /// <summary>
  80. /// 标定点位
  81. /// </summary>
  82. [Description("标定点位")]
  83. StandardizationPoint = 2,
  84. /// <summary>
  85. /// 轴点位
  86. /// </summary>
  87. [Description("轴点位")]
  88. AxisPoint = 3,
  89. /// <summary>
  90. /// CAD图点位
  91. /// </summary>
  92. [Description("CAD图点位")]
  93. CADPoint = 4,
  94. }

转换器

  1. /// <summary>
  2. /// 转换器
  3. /// </summary>
  4. public class PointTypeConvert : IValueConverter
  5. {
  6. //正转
  7. public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
  8. {
  9. //根据枚举值获取对应的描述
  10. return ((PointTypeEnum)value).GetEnumDesc();
  11. }
  12. //反转
  13. public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
  14. {
  15. return value;
  16. }
  17. }

界面绑定

注意看

1.引用转换器所在命名空间 xmlns:dc="clr-namespace:SZCLKJ.Weld.App.DataConvert"

2.在界面资源中创建资源key :<dc:PointTypeConvert x:Key="pointTypeCon"/>

3.在要使用的地方调用: <DataGridTextColumn Header="类型" Binding="{Binding Type,Converter={StaticResource pointTypeCon}}" Width="100"/>

  1. <UserControl x:Class="SZCLKJ.Weld.App.Views.PointListView"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
  7. xmlns:local="clr-namespace:SZCLKJ.Weld.App.Views"
  8. xmlns:dc="clr-namespace:SZCLKJ.Weld.App.DataConvert"
  9. mc:Ignorable="d"
  10. d:DesignHeight="450" d:DesignWidth="800">
  11. <UserControl.Resources>
  12. <ResourceDictionary>
  13. <ResourceDictionary.MergedDictionaries>
  14. <ResourceDictionary Source="/SZCLKJ.Weld.App;component/Asset/Styles/BaseResources.xaml"/>
  15. <ResourceDictionary Source="/SZCLKJ.Weld.App;component/Asset/Styles/ButtonStyles.xaml"/>
  16. <ResourceDictionary Source="/SZCLKJ.Weld.App;component/Asset/Styles/TextBoxStyle.xaml"/>
  17. </ResourceDictionary.MergedDictionaries>
  18. <dc:PointTypeConvert x:Key="pointTypeCon"/>
  19. </ResourceDictionary>
  20. </UserControl.Resources>
  21. <Grid>
  22. <Grid.RowDefinitions>
  23. <RowDefinition Height="50"/>
  24. <RowDefinition/>
  25. </Grid.RowDefinitions>
  26. <!--<Border BorderBrush="#DDD" BorderThickness="0,0,0,1"/>-->
  27. <WrapPanel VerticalAlignment="Center" >
  28. <!--搜索框-->
  29. <Label Grid.Row="0" Content="配方:" BorderThickness="0" FontSize="20" Height="35" Margin="10,0,0,0"
  30. HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="#AAFFFFFF" />
  31. <ComboBox Grid.Row="0" x:Name="cboFormulaList"
  32. ItemsSource="{Binding FormulaList}" DisplayMemberPath="Name" SelectedValuePath="Id"
  33. SelectedItem="{Binding SearchModel.FormulaId, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
  34. SelectionChanged="cboFormulaList_SelectionChanged"
  35. Width="150" Height="35" FontSize="20" Margin="10,10,0,6" HorizontalAlignment="Left" VerticalAlignment="Center" />
  36. <Label Content="点位名称:" BorderThickness="0" FontSize="20" Height="35" Margin="10,0,0,0"
  37. VerticalAlignment="Center"
  38. Foreground="#AAFFFFFF" />
  39. <TextBox Text="{Binding SearchModel.NameLike}" VerticalAlignment="Center" HorizontalAlignment="Left"
  40. Width="100" Height="35" Margin="10,0,0,0"
  41. Style="{DynamicResource SearchTextBoxStyle}"/>
  42. <Label Content="类型:" BorderThickness="0" FontSize="20" Height="35" Margin="10,0,0,0"
  43. HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="#AAFFFFFF" />
  44. <!--<ComboBox x:Name="cboPointTypes"
  45. ItemsSource="{Binding PointTypes}" DisplayMemberPath="Name" SelectedValuePath="Id"
  46. SelectedItem="{Binding SearchModel.Type}"
  47. Width="150" Height="35" FontSize="20" Margin="10,10,0,6" HorizontalAlignment="Left"
  48. VerticalAlignment="Center" />-->
  49. <ComboBox Name="cboPointType" Width="150" Height="35" FontSize="20" Margin="10,10,0,6"
  50. HorizontalAlignment="Left" VerticalAlignment="Center"
  51. ItemsSource="{Binding PointTypes}"
  52. DisplayMemberPath="Description"
  53. SelectedValuePath="Val"
  54. SelectedItem="{Binding PointTypeSelect, Mode=TwoWay}"
  55. >
  56. <i:Interaction.Triggers>
  57. <i:EventTrigger EventName="SelectionChanged">
  58. <i:InvokeCommandAction Command="{Binding PointTypeSelectionChangedCommand}"
  59. CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ComboBox}}"/>
  60. </i:EventTrigger>
  61. </i:Interaction.Triggers>
  62. </ComboBox>
  63. </WrapPanel>
  64. <!--右边按钮-->
  65. <StackPanel VerticalAlignment="Center" HorizontalAlignment="Right" Orientation="Horizontal">
  66. <Button Content="查询" Style="{StaticResource NormalButtonStyle}" Background="#FF0ABEFF"
  67. Width="70" Margin="5,0" Command="{Binding QueryCommand}"/>
  68. <Button Content="添加"
  69. Style="{StaticResource IconWithContentButtonStyle}" Width="100"
  70. Tag="&#xe603;" Background="#FFF05005"
  71. Command="{Binding AddCommand}"/>
  72. </StackPanel>
  73. <DataGrid Grid.Row="1" ItemsSource="{Binding DataList}" AutoGenerateColumns="False" CanUserAddRows="False" ColumnWidth="*"
  74. >
  75. <DataGrid.Columns>
  76. <DataGridTextColumn Header="序号" Binding="{Binding No}" Width="150" />
  77. <DataGridTextColumn Header="名称" Binding="{Binding Name}" Width="100" />
  78. <DataGridTextColumn Header="X坐标" Binding="{Binding PointX}" Width="100"/>
  79. <DataGridTextColumn Header="Y坐标" Binding="{Binding PointY}" Width="100"/>
  80. <DataGridTextColumn Header="补偿X" Binding="{Binding AddX}" Width="100"/>
  81. <DataGridTextColumn Header="补偿Y" Binding="{Binding AddY}" Width="100"/>
  82. <!--<DataGridTextColumn Header="类型" Binding="{Binding TypeDesc}" Width="100"/>-->
  83. <DataGridTextColumn Header="类型" Binding="{Binding Type,Converter={StaticResource pointTypeCon}}" Width="100"/>
  84. <DataGridTextColumn Header="备注" Binding="{Binding Remark}"/>
  85. <DataGridTemplateColumn Width="120" Header="操作">
  86. <DataGridTemplateColumn.CellTemplate>
  87. <DataTemplate>
  88. <StackPanel Orientation="Horizontal">
  89. <Button x:Name="gridEdit"
  90. Width="40"
  91. Height="20"
  92. Background="#409EFF"
  93. Foreground="White"
  94. Margin="10,0,0,0"
  95. Command="{Binding DataContext.EditCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"
  96. CommandParameter="{Binding Id}"
  97. Content="编辑" />
  98. <Button
  99. x:Name="gridDele"
  100. Width="40"
  101. Height="20"
  102. Background="#F56C6C"
  103. Foreground="White"
  104. Margin="10,0,0,0"
  105. Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"
  106. CommandParameter="{Binding Id}"
  107. Content="删除" />
  108. </StackPanel>
  109. </DataTemplate>
  110. </DataGridTemplateColumn.CellTemplate>
  111. </DataGridTemplateColumn>
  112. </DataGrid.Columns>
  113. </DataGrid>
  114. </Grid>
  115. </UserControl>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/537641
推荐阅读
相关标签
  

闽ICP备14008679号