当前位置: 首页 > news >正文

免费小说网站怎么做工程公司注册需要什么条件

免费小说网站怎么做,工程公司注册需要什么条件,dede网站搬家后为什么都没有内容呢,能在线做初中题的网站1、介绍 上节开发了一个winform版的通讯测试工具#xff0c;这节再搞个wpf版的#xff0c;wpf是什么#xff1f;请自行百度#xff0c;也可以看前面的博客#xff0c;WPF真入门教程#xff0c;wpf的界面效果是比winform漂亮#xff0c;因为wpf使用了web项目中的css样式…1、介绍 上节开发了一个winform版的通讯测试工具这节再搞个wpf版的wpf是什么请自行百度也可以看前面的博客WPF真入门教程wpf的界面效果是比winform漂亮因为wpf使用了web项目中的css样式来美化界面在这个例子中用到wpf的控件资源样式命令绑定等采用的是mvvm的渲染模式界面如图 前面的winform界面 2、开工干 2.1 创建wpf项目 2.2 创建目录及PLC模型类对象 2.3 创建自定义的消息弹窗 MsgBoxWindow.xaml代码 Window x:ClassOmronFinsWPFApp.MsgBoxWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006xmlns:localclr-namespace:OmronFinsWPFAppmc:IgnorabledTitle消息框 Height200 Width420 WindowStartupLocationCenterScreen BorderThickness1,0,1,1 ResizeModeNoResize WindowStyleNone AllowsTransparencyTrue BackgroundTransparentWindow.ResourcesStyle TargetTypeButton x:KeymsgbtnStyleSetter PropertyWidth Value60/Setter PropertyHeight Value25/Setter PropertyMargin Value10,0,15,0//Style/Window.ResourcesGrid BackgroundTransparent MouseLeftButtonDownGrid_MouseLeftButtonDown Border BorderBrush#FFA9AEB1 BorderThickness2 CornerRadius10 Margin5Border.EffectDropShadowEffect BlurRadius10 Color#FFB8BBC8 Direction300 ShadowDepth2//Border.EffectBorder.BackgroundLinearGradientBrush EndPoint0.5,1 StartPoint0.5,0GradientStop Color#FFFBFBFB Offset0.16/GradientStop Color#FFB4D8E2 Offset0.986//LinearGradientBrush/Border.BackgroundGrid x:Namegrid Margin5Grid.RowDefinitionsRowDefinition Height30/RowDefinition/RowDefinition Height50 //Grid.RowDefinitionsGrid Grid.Row0 BackgroundTransparentBorder BackgroundTransparent GridTextBlock Text{Binding MessageTitle} HorizontalAlignmentLeft Height25 Width200 VerticalAlignmentCenter Margin5,0 /Image Sourceimgs/errbtn.jpg HorizontalAlignmentRight Margin0,3,3,2 MouseLeftButtonDownImage_MouseLeftButtonDown//Grid/Border/Grid!--显示图片和文本--StackPanel Grid.Row1 VerticalAlignmentCenter OrientationHorizontalImage Source{Binding ImagePath} Width30 Height30 Margin40,20,20,20/TextBlock VerticalAlignmentCenter HorizontalAlignmentLeft TextWrappingWrapWithOverflow Width280 TextAlignmentLeftText{Binding MessageBoxText} FontSize12//StackPanel!--Button Margin(坐上右下)--StackPanel Grid.Row2 OrientationHorizontal HorizontalAlignmentRightButton Content确 定 Style{StaticResource msgbtnStyle} x:NameOkButton IsDefaultTrueVisibility{Binding OkButtonVisibility,ModeOneWay} ClickOkButton_Click/Button Content是 Style{StaticResource msgbtnStyle} x:NameYesButton Visibility{Binding YesButtonVisibility,ModeOneWay} ClickYesButton_Click/Button Content否 Style{StaticResource msgbtnStyle} x:NameNoButton Visibility{Binding NoButtonVisibility,ModeOneWay} ClickNoButton_Click/Button Content取消 Style{StaticResource msgbtnStyle} x:NameCancelButton Visibility{Binding CancelButtonVisibility} ClickCancelButton_Click//StackPanel/Grid/Border/Grid /WindowMsgBoxWindow.xaml.cs代码这是页面MsgBoxWindow.xaml的后台逻辑代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes;namespace OmronFinsWPFApp {/// summary/// MsgBoxWindow.xaml 的交互逻辑/// /summarypublic partial class MsgBoxWindow : Window{public MsgBoxWindow(){InitializeComponent();this.DataContext this;//所有按钮不显示OkButtonVisibility Visibility.Collapsed;CancelButtonVisibility Visibility.Collapsed;YesButtonVisibility Visibility.Collapsed;NoButtonVisibility Visibility.Collapsed;Result CustomMessageBoxResult.None;}/// summary/// 显示按钮类型/// /summarypublic enum CustomMessageBoxButton{OK 1,OKCancel 2,YesNo 3,YesNoCancel 4}/// summary/// 消息框返回值/// /summarypublic enum CustomMessageBoxResult{None 0,//用户直接关闭消息框OK 1,//用户点击了确定按钮Cancel 2,//用户点击了取消按钮Yes 3,//用户点击了是按钮No 4//用户点击了否按钮}/// summary/// 图标类型/// /summarypublic enum CustomMessageBoxIcon{None 0,Error 1,Question 2,Infomation 3}#region 页面属性定义/// summary/// 消息文本/// /summarypublic string MessageBoxText { get; set; }/// summary/// 消息框标题/// /summarypublic string MessageTitle { get; set; }/// summary/// 图标路径/// /summarypublic string ImagePath { get; set; }/// summary/// 显示确定/// /summarypublic Visibility OkButtonVisibility { get; set; }/// summary/// 显示取消/// /summarypublic Visibility CancelButtonVisibility { get; set; }/// summary/// 显示是/// /summarypublic Visibility YesButtonVisibility { get; set; }/// summary/// 显示否/// /summarypublic Visibility NoButtonVisibility { get; set; }/// summary/// 消息框返回值/// /summarypublic CustomMessageBoxResult Result { get; set; }#endregionprivate void CancelButton_Click(object sender, RoutedEventArgs e){Result CustomMessageBoxResult.Cancel;this.Close();}private void NoButton_Click(object sender, RoutedEventArgs e){Result CustomMessageBoxResult.No;this.Close();}private void YesButton_Click(object sender, RoutedEventArgs e){Result CustomMessageBoxResult.Yes;this.Close();}private void OkButton_Click(object sender, RoutedEventArgs e){Result CustomMessageBoxResult.OK;this.Close();}private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){this.Close();}/// summary/// 消息框拖动/// /summary/// param namesender/param/// param namee/paramprivate void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){this.DragMove();}/// summary/// 显示消息框/// /summary/// param namemsgText/param/// param nametitle/param/// param namemsgBtn/param/// param namemsgIcon/param/// returns/returnspublic static CustomMessageBoxResult Show(string msgText, string title, CustomMessageBoxButton msgBtn, CustomMessageBoxIcon msgIcon){MsgBoxWindow msg new MsgBoxWindow();msg.Topmost true;msg.MessageBoxText msgText;msg.MessageTitle title;//消息框按钮显示switch (msgBtn){case CustomMessageBoxButton.OK:msg.OkButtonVisibility Visibility.Visible;break;case CustomMessageBoxButton.OKCancel:msg.OkButtonVisibility Visibility.Visible;msg.CancelButtonVisibility Visibility.Visible;break;case CustomMessageBoxButton.YesNo:msg.YesButtonVisibility Visibility.Visible;msg.NoButtonVisibility Visibility.Visible;break;case CustomMessageBoxButton.YesNoCancel:msg.YesButtonVisibility Visibility.Visible;msg.NoButtonVisibility Visibility.Visible;msg.CancelButtonVisibility Visibility.Visible;break;default:msg.OkButtonVisibility Visibility.Visible;break;}switch (msgIcon){case CustomMessageBoxIcon.Infomation:msg.ImagePath imgs/success.jpg;break;case CustomMessageBoxIcon.Error:msg.ImagePath imgs/error.jpg;break;case CustomMessageBoxIcon.Question:msg.ImagePath imgs/question.jpg;break;}msg.ShowDialog();return msg.Result;} } }2.4 添加之前的通讯库dll文件并引用到项目中 2.5 添加目录及命令类RelayCommand using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input;namespace OmronFinsWPFApp.Common {/// summary/// 命令实现类/// /summarypublic class RelayCommand : ICommand{public event EventHandler CanExecuteChanged;/// summary/// 要执行的操作/// /summaryprivate Actionobject executeActions;/// summary/// 是否可以执行的委托/// /summaryprivate Funcobject, bool canExecuteFunc;/// summary/// 构造函数 无参构造/// /summarypublic RelayCommand() { }/// summary/// 通过执行的委托构造/// /summary/// param nameexecute/parampublic RelayCommand(Actionobject execute) : this(execute, null){}/// summary/// 通过执行的操作与是否可执行的委托/// /summary/// param nameexecute要执行的操作/param/// param namecanExecute是否可以被执行/parampublic RelayCommand(Actionobject execute, Funcobject, bool canExecute){this.executeActions execute;this.canExecuteFunc canExecute;}/// summary/// 命令是否可以执行/// /summary/// param nameparameter/param/// returns/returnspublic bool CanExecute(object parameter){if (canExecuteFunc ! null)return this.canExecuteFunc(parameter);elsereturn true;}/// summary/// 要执行的操作/// /summary/// param nameparameter/parampublic void Execute(object parameter){if (executeActions null)return;this.executeActions(parameter);}/// summary/// 执行CanExecuteChanged事件/// /summarypublic void OnCanExecuteChanged(){this.CanExecuteChanged?.Invoke(this, new EventArgs());}} }2.6 添加视图模型类对象 using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using static OmronFinsWPFApp.MsgBoxWindow;namespace OmronFinsWPFApp.ViewModel {/// summary/// 视图模型基类/// /summarypublic class ViewModelBase : INotifyPropertyChanged{/// summary/// 属性值发生更改时触发/// /summarypublic event PropertyChangedEventHandler PropertyChanged;/// summary/// 执行更改/// C#5.0中的新特性CallerMemberName/// /summary/// param namepropertyName/paramprotected void OnPropertyChanged([CallerMemberName] string propertyName ){if (PropertyChanged ! null){PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));}}/// summary/// 成功消息提示/// /summary/// param namemessage/param/// param nametitle/param/// param namebuttons/parampublic void ShowMessage(string message, string title 提示, CustomMessageBoxButton buttons CustomMessageBoxButton.OK){Show(message, title, buttons, CustomMessageBoxIcon.Infomation);}/// summary/// 错误消息框/// /summary/// param namemessage/param/// param nametitle/param/// param namebuttons/parampublic void ShowError(string message, string title 错误, CustomMessageBoxButton buttons CustomMessageBoxButton.OK){Show(message, title, buttons, CustomMessageBoxIcon.Error);}/// summary/// 询问消息框/// /summary/// param namemessage/param/// param nametitle/param/// param namebuttons/param/// returns/returnspublic CustomMessageBoxResult ShowQuestion(string message, string title 询问, CustomMessageBoxButton buttons CustomMessageBoxButton.OKCancel){return Show(message, title, buttons, CustomMessageBoxIcon.Question);}} }using Omron.Communimcation.Fins.Omron; using OmronFinsWPFApp.Common; using OmronFinsWPFApp.Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input;namespace OmronFinsWPFApp.ViewModel {/// summary/// 视图模型/// /summarypublic class MainViewModel : ViewModelBase{/// summary/// finstcp对象/// /summaryFinsTcp finsTcp; PLCMemoryModel readPLCModel SetInitModel();/// summary/// 读取PLC/// /summarypublic PLCMemoryModel ReadPLCModel{get { return readPLCModel; }set{readPLCModel ReadPLCModel;OnPropertyChanged();//属性通知}}PLCMemoryModel writePLCModel SetInitModel();/// summary/// 写入PLC/// /summarypublic PLCMemoryModel WritePLCModel{get { return writePLCModel; }set{writePLCModel WritePLCModel;OnPropertyChanged();}}/// summary/// 初始化页面参数/// /summary/// returns/returnsprivate static PLCMemoryModel SetInitModel(){PLCMemoryModel model new PLCMemoryModel();model.Area DM;model.DataType ushort;model.Address ;model.Count 1;return model;}private string hostName 192.168.1.4;/// summary/// PLC地址/// /summarypublic string HostName{get{return hostName;}set{hostName value;}}private string hostPort 7788;/// summary/// PLC端口/// /summarypublic string HostPort{get { return hostPort; }set{hostPort value;}}/// summary/// 存储区下拉框数据源/// /summarypublic Liststring CboCustTypes{get{return new Liststring() { DM, H, W, CIO };}}/// summary/// 数据类型/// /summarypublic Liststring CboCustDatas{get{return new Liststring() { ushort, short, float, bool };}} private string readWords ;/// summary/// 读数结果/// /summarypublic string ReadWords{get { return readWords; }set{readWords value;OnPropertyChanged();}}private string writeWords ;/// summary/// 写入数据/// /summarypublic string WriteWords{get { return writeWords; }set{writeWords value;OnPropertyChanged();}}private string connectWords 当前未连接;/// summary/// 连接状态/// /summarypublic string ConnectWords{get { return connectWords; }set{connectWords value;OnPropertyChanged();}}/// /summary/// summary/// 登录按钮的命令处理/// /summarypublic ICommand LoginCommand{get{return new RelayCommand(o {var name HostName;var port HostPort;finsTcp new FinsTcp(name, Convert.ToInt32(port), 10, 04);// 创建连接 var result finsTcp.Connect();// 开始连接PLCif (!result.IsSuccessed){ShowError(result.Message, 错误);return;}ShowMessage(PLC连接成功, 提示);ConnectWords PLC连接成功;});}}/// /summary/// summary/// 读取按钮的命令处理/// /summarypublic ICommand ReadCommand{get{return new RelayCommand(o {var d ReadPLCModel; //内存地址string plcAddr ReadPLCModel.Area ReadPLCModel.Address;//读取数量ushort readCount ushort.Parse(ReadPLCModel.Count);//数据类型string dataType ReadPLCModel.DataType;switch (dataType){case ushort:var datas finsTcp.Readushort(plcAddr, readCount);if (!datas.IsSuccessed){ShowMessage(datas.Message, 提示);return;}ReadWords string.Join(,, datas.Datas);break;case short:var datas2 finsTcp.Readshort(plcAddr, readCount);if (!datas2.IsSuccessed){ShowMessage(datas2.Message, 提示);return;}ReadWords string.Join(,, datas2.Datas);break;case float:var datas3 finsTcp.Readfloat(plcAddr, readCount);if (!datas3.IsSuccessed){ShowMessage(datas3.Message, 提示);return;}ReadWords string.Join(,, datas3.Datas);break;case bool:var datas4 finsTcp.Readbool(plcAddr, readCount);if (!datas4.IsSuccessed){ShowMessage(datas4.Message, 提示);return;}ReadWords string.Join(,, datas4.Datas);break;}});}}/// /summary/// summary/// 写入按钮的命令处理/// /summarypublic ICommand WriteCommand{get{return new RelayCommand(o {var d WritePLCModel;//内存地址string plcAddr WritePLCModel.Area WritePLCModel.Address;//写入数量 ushort writeCount ushort.Parse(WritePLCModel.Count);//数据类型string dataType WritePLCModel.DataType;//实际数量string objWriteVals WriteWords;ushort objWCount (ushort)objWriteVals.Split(,).Length;//实际数量与要求数量不一致不允许操作if (writeCount ! objWCount){ShowError(写入值的数量不正确!);return;}Liststring vals objWriteVals.Split(,).ToList();switch (dataType){case ushort://实际数值转换成list集合ushort类型Listushort objushort new Listushort();vals.ForEach((x) {objushort.Add(ushort.Parse(x));});var finish1 finsTcp.Write(objushort, plcAddr);if (finish1.IsSuccessed){ShowMessage(finish1.Message, 提示);}break;case short://实际数值转换成list集合 short类型Listshort objshort new Listshort();vals.ForEach((x) {objshort.Add(short.Parse(x));});var finish2 finsTcp.Write(objshort, plcAddr);if (finish2.IsSuccessed){ShowMessage(finish2.Message, 提示);}break;case float://实际数值转换成list集合 floatListfloat objfloat new Listfloat();vals.ForEach((x) {objfloat.Add(float.Parse(x));});var finish3 finsTcp.Write(objfloat, plcAddr);if (finish3.IsSuccessed){ShowMessage(finish3.Message, 提示);}break;case bool://实际数值转换成list集合boolListbool objbool new Listbool();vals.ForEach((x) {if (x 1){objbool.Add(true);}else{objbool.Add(false);}});var finish4 finsTcp.Write(objbool, plcAddr);if (finish4.IsSuccessed){ShowMessage(finish4.Message, 提示);}break;}});}}} }2.7 主界面样式 首先添加资源文件 ResourceDictionary xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xaml!--定义通用的按钮样式--Style TargetType{x:Type Button} x:KeybtnBaseStyleSetter PropertyHeight Value22/Setter PropertyWidth Value60/Setter PropertyFontFamily Value微软雅黑/Setter PropertyMargin Value3,0/Setter PropertyFontSize Value16/Setter PropertyFontWeight ValueBold/Setter PropertyForeground ValueBlue//Style!--TextBox默认样式--Style TargetType{x:Type TextBox} x:KeytxtTextBoxStyleSetter PropertyWidth Value150/Setter PropertyHeight Value25/Setter PropertyBorderBrush Value#FF105190/Setter PropertyBorderThickness Value1/Setter PropertyMargin Value2,0/Setter PropertyVerticalContentAlignment ValueCenter/Setter PropertyBackgroundSetter.ValueLinearGradientBrush StartPoint0.5,0 EndPoint0.5,1GradientStop ColorWhite Offset0/GradientStop Color#FFE4E4E4 Offset1//LinearGradientBrush/Setter.Value/Setter/Style!--TextBlock默认样式--Style TargetType{x:Type TextBlock} x:KeytxtTextBlockStyleSetter PropertyMargin Value1/Setter PropertyHeight Value15//Style!--页面下拉框样式--LinearGradientBrush x:KeyComboBox.Static.Background EndPoint0,1 StartPoint0,0GradientStop ColorWhite Offset0/GradientStop Color#FFE4E4E4 Offset1//LinearGradientBrushSolidColorBrush x:KeyComboBox.Static.Border Color#FF105190/!--combox默认样式--Style x:KeycboStyle TargetType{x:Type ComboBox}Setter PropertyBackground Value{StaticResource ComboBox.Static.Background}/Setter PropertyBorderBrush Value{StaticResource ComboBox.Static.Border}/Setter PropertyForeground Value{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}/Setter PropertyWidth Value150/Setter PropertyHeight Value25/Setter PropertyBorderThickness Value1/Setter PropertyScrollViewer.HorizontalScrollBarVisibility ValueAuto/Setter PropertyScrollViewer.VerticalScrollBarVisibility ValueAuto/Setter PropertyPadding Value6,3,5,3/Setter PropertyScrollViewer.CanContentScroll Valuetrue/Setter PropertyScrollViewer.PanningMode ValueBoth/Setter PropertyStylus.IsFlicksEnabled ValueFalse//Style /ResourceDictionary 使用资源文件  2.8 主界面布局 Window x:ClassOmronFinsWPFApp.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006xmlns:localclr-namespace:OmronFinsWPFApp.ViewModelmc:Ignorabled WindowStartupLocationCenterScreenFontSize13 FontFamilyMicrosoft YaHei FontWeightExtraLight Title欧姆龙PLC通讯工具 Height430 Width860 NameloginWinWindow.DataContextlocal:MainViewModel//Window.DataContextGrid BackgroundHoneydew ShowGridLinestrueGrid.RowDefinitionsRowDefinition Height60/RowDefinition//Grid.RowDefinitions!--第一行标题--TextBlock Grid.Row0 TextC#利用Fins协议实现欧姆龙PLC的数据读写 FontSize22 VerticalAlignmentCenter Margin20,0 FontWeightBold /!--第二行信息--Grid Grid.Row1Grid.ColumnDefinitionsColumnDefinition Width200/ColumnDefinition//Grid.ColumnDefinitions StackPanel Grid.Column0 Margin20TextBlock TextPLC地址/TextBox Height30 VerticalContentAlignmentCenter Padding5,0 Margin0,10 Text{Binding HostName} / TextBlock Text端口号 Margin0,10,0,0/TextBox Height30 VerticalContentAlignmentCenter Padding5,0 Margin0,10 Text{Binding HostPort} / Button Content连接 Margin0,30,0,0 Height30 Command{Binding LoginCommand} CommandParameter{Binding ElementNameloginWin} /Button Content断开 Margin0,10 Height30 /TextBlock Text{Binding ConnectWords,ModeTwoWay,UpdateSourceTriggerPropertyChanged} Margin0,10,0,0 ForegroundBlue//StackPanelGrid Grid.Column1Grid.RowDefinitionsRowDefinition Height60/RowDefinition Height80/RowDefinition Height30/RowDefinition Height60/RowDefinition Height80//Grid.RowDefinitionsGrid.ColumnDefinitionsColumnDefinition/ColumnDefinition//Grid.ColumnDefinitionsStackPanel OrientationHorizontal Grid.Row0 Grid.Column0 Grid.ColumnSpan2 Margin10TextBlock Text存储区 Style{StaticResource txtTextBlockStyle} /TextBlockComboBox ItemsSource{Binding CboCustTypes} SelectedValue{Binding ReadPLCModel.Area} Width70 Style{StaticResource cboStyle}/ComboBoxTextBlock Text数据类型 Style{StaticResource txtTextBlockStyle} /TextBlockComboBox ItemsSource{Binding CboCustDatas} SelectedValue{Binding ReadPLCModel.DataType} Width70 Style{StaticResource cboStyle}/ComboBoxTextBlock Text地址 Style{StaticResource txtTextBlockStyle} /TextBlockTextBox Text{Binding ReadPLCModel.Address} Width100 Style{StaticResource txtTextBoxStyle} /TextBlock Text数量 Style{StaticResource txtTextBlockStyle} /TextBlockTextBox Text{Binding ReadPLCModel.Count} Width60 Style{StaticResource txtTextBoxStyle} /Button Content读取 Height30 Width100 Command{Binding ReadCommand} CommandParameter{Binding ElementNameloginWin} Style{StaticResource btnBaseStyle} //StackPanelStackPanel OrientationVertical Grid.Row1 Grid.Column0 Grid.ColumnSpan2 Margin10TextBlock Text读取结果(多个数据之间用逗号隔开) Style{StaticResource txtTextBlockStyle} Margin0 5 0 9/TextBlockTextBox Text{Binding ReadWords,ModeTwoWay,UpdateSourceTriggerPropertyChanged} Width600 Style{StaticResource txtTextBoxStyle} //StackPanelStackPanel OrientationHorizontal Margin5 Grid.Row2 Grid.Column0 Grid.ColumnSpan2 Background#4490AC Width600/StackPanelStackPanel OrientationHorizontal Grid.Row3 Grid.Column0 Grid.ColumnSpan2 Margin10TextBlock Text存储区 Style{StaticResource txtTextBlockStyle} /TextBlockComboBox ItemsSource{Binding CboCustTypes} SelectedValue{Binding WritePLCModel.Area } Width70 Style{StaticResource cboStyle}/ComboBoxTextBlock Text数据类型 Style{StaticResource txtTextBlockStyle} /TextBlockComboBox ItemsSource{Binding CboCustDatas} SelectedValue{Binding WritePLCModel.DataType } Width70 Style{StaticResource cboStyle}/ComboBoxTextBlock Text地址 Style{StaticResource txtTextBlockStyle} /TextBlockTextBox Text{Binding WritePLCModel.Address } Width100 Style{StaticResource txtTextBoxStyle} /TextBlock Text数量 Style{StaticResource txtTextBlockStyle} /TextBlockTextBox Text{Binding WritePLCModel.Count} Width60 Style{StaticResource txtTextBoxStyle} /Button Content写入 Height30 Width100 Command{Binding WriteCommand} CommandParameter{Binding ElementNameloginWin} Style{StaticResource btnBaseStyle} //StackPanelStackPanel OrientationVertical Grid.Row4 Grid.Column0 Grid.ColumnSpan2 Margin10TextBlock Text写入数据(多个数据之间用逗号隔开) Style{StaticResource txtTextBlockStyle} Margin0 5 0 9 /TextBlockTextBox Text{Binding WriteWords ,ModeTwoWay,UpdateSourceTriggerPropertyChanged} Width600 Style{StaticResource txtTextBoxStyle} //StackPanel/Grid/Grid/Grid /Window运行起来效果 3、测试软件 3.1 测试PLC连接 3.2 读取dm区100的short类型 3.3 读取h区100的ushort类型 3.4 读取w区100的float类型 3.5 读取cio区100的bool类型 3.6 写入DM区110的short类型 3.7 写入H区110的ushort类型 3.8 写入W区110的float类型 3.9 写入CIO区110的bool类型 全部通讯报文  4、小结 本例子用到WPF的MVVM模式不是winform中的按钮点击事件是后台绑定viewmodel用数据驱动页面控件跟vue中的mvvm渲染数据方式一样跟微信小程序的MVVM模式一样的这就实现了界面与数据的分离。 打字不易截图不易代码不易准备不易原创不易多多点赞收藏江湖有你共同致富。
http://www.pierceye.com/news/32659/

相关文章:

  • 临海门户网站住房和城乡建设规划局有哪些网站可以免费做推广的
  • 营销型网站分为哪几种重庆住房城乡建设厅官方网站
  • 保定网站设计有做数学题的网站吗
  • 大岭山镇仿做网站站长之家whois查询
  • 网站建设行业解决方案公司网站推广计划书
  • 如何做公众号小说网站赚钱H5平台网站建设
  • 学校网站建设及管理制度网站正在建设中的网页怎么做
  • 长春网站建设方案咨询张向东
  • 即墨网站建设公司怎么建设网站百度搜索的到
  • 石家庄招标网官方网站WordPress判断文章形式
  • 扁平化网站 psd新公司网站建设分录
  • 网上拿货做哪个网站好无锡工程建设信息网站
  • 室内设计网站推荐知乎北京画册设计公司
  • 传奇免费网站模板下载学软件工程可以从事什么工作
  • 兰州企业网站建设公司经常使用( )对网页的布局进行控制
  • 网站建设科技风php做直播类型的网站
  • 建站市场分析工会 网站 建设
  • 深圳网站专业建设公司做京东网站需要哪些手续费
  • 中山住房和建设局工程交易网站总结什么是网络营销
  • 广告模板网站wordpress do action
  • 网站备案期间能使用吗做DJ网站违法吗
  • 网站设计的流程是什么做跨境电商网站报价
  • 上饶做网站品牌营销策划服务
  • 外贸没有公司 如何做企业网站?成品小说网站源码
  • 贵阳市观山湖区网站建设做网站教程
  • 织梦网站安装教程视频教程网站如何做才能被360收录
  • 网站后台系统功能哈尔滨快照优化
  • 高埗做网站wordpress the7下载
  • 常德网站优化推广wordpress网页聊天工具
  • 网站模板 chinazwordpress app 接口