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

自动化生产管理平台(Automatic)

1,自动化生产管理平台(Automatic)

1.1,重新定义Window样式

添加WindowChrome元素进行自定义定义

<Window x:Class="lzg.Automatic.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:lzg.Automatic" mc:Ignorable="d" Title="MainWindow" Height="700" Width="1150" FontSize="12" FontWeight="ExtraLight" FontFamily="Micr0soft Yahei" WindowStartupLocation="CenterScreen" WindowStyle="None" > <WindowChrome.WindowChrome> <!--CaptionHeight标题栏高度,不需要添加后台代码即可在此区域内可实现拖拽--> <WindowChrome CaptionHeight="50" GlassFrameThickness="-1" ></WindowChrome> </WindowChrome.WindowChrome>

注意:如果标签元素(例如Button)位于Caption区域,若想其或者其包含的元素响应事件需要对该元素添加设置附加属性:WindowChrome.IsHitTestVisibleInChrome="True"

例如:在Button位于Caption区域若想鼠标进入StackPanel内的所有Button背景颜色均可变化则需要设置StackPanel附加属性WindowChrome.IsHitTestVisibleInChrome="True".

<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Column="2" WindowChrome.IsHitTestVisibleInChrome="True"> <Button Style="{StaticResource winControlButton}">&#xe624;</Button> <Button Style="{StaticResource winControlButton}">&#xe600;</Button> <Button Style="{StaticResource winControlButton}" Background="DarkRed">&#xe609;</Button> </StackPanel>
<Style x:Key="winControlButton" TargetType="Button"> <Setter Property="Width" Value="35"> </Setter> <Setter Property="Height" Value="35"> </Setter> <Setter Property="Background" Value="#11ffffff"></Setter> <Setter Property="Foreground" Value="White"></Setter> <Setter Property="FontFamily" Value="{StaticResource iconFont}"></Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Border x:Name="root" Background="{TemplateBinding Background}"> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"></ContentPresenter> </Border> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="root" Property="Background" Value="#66ffffff"></Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>
1.2,导航到指定位置

使用页导航,导航到指定该页的指定位置:

格式:页位置#标签名,例如SettingsPage.xaml#p1表示导航到SettingsPage.xaml页面Element名称(Name)为p1处。

<!--导航按钮--><BorderGrid.Row="1"BorderBrush="LightGray"BorderThickness="0,0,1,0"><StackPanelButtonBase.Click="StackPanel_Click"><StackPanel.Resources><StyleTargetType="RadioButton"><Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="RadioButton"> <Borderx:Name="Part_root"Padding="8,8,0,8"> <ContentPresenter></ContentPresenter> </Border> <ControlTemplate.Triggers> <Trigger Property="IsChecked"Value="True"> <Setter TargetName="Part_root"Property="Background"Value="#18aabd"></Setter> <Setter Property="Foreground"Value="White"></Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter></Style></StackPanel.Resources><RadioButtonContent="设备清单"IsChecked="True"Tag="p1"></RadioButton><RadioButtonContent="环境检测"Tag="p2"></RadioButton><RadioButtonContent="设置3"Tag="p3"></RadioButton><RadioButtonContent="设置4"Tag="p4"></RadioButton><RadioButtonContent="设置5"Tag="p5"></RadioButton></StackPanel></Border><ScrollViewerGrid.Row="1"Grid.Column="1"Margin="10,5,5,5"VerticalScrollBarVisibility="Hidden"><FrameSource="SettingsPage.xaml"x:Name="frameContent"NavigationUIVisibility="Hidden"></Frame></ScrollViewer>

给元素指定Name,用于导航定位

<Pagex:Class="lzg.Automatic.Views.SettingsPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:lzg.Automatic.Views"mc:Ignorable="d"xmlns:vm="clr-namespace:lzg.Automatic.ViewModels"d:DesignHeight="450"d:DesignWidth="800"Title="SettingsPage"><Page.Resources><StyleTargetType="GroupBox"><Setter Property="MinHeight"Value="100"></Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="GroupBox"> <StackPanel> <Label Padding="5,15,5,8"Content="{TemplateBinding Header}"FontSize="{TemplateBinding FontSize}"BorderBrush="LightGray"BorderThickness="0,0,0,1"></Label> <ContentPresenter Margin="0,10,0,0"></ContentPresenter> </StackPanel> </ControlTemplate> </Setter.Value> </Setter></Style></Page.Resources><Page.DataContext><vm:SettingsViewModel></vm:SettingsViewModel></Page.DataContext><StackPanel><!--这里的Name=p1用于导航定位--!><GroupBoxHeader="设备清单"x:Name="p1"><ListBoxHorizontalContentAlignment="Stretch"TextBlock.Foreground="Black"ItemsSource="{Binding DeviceList}"><ListBox.Template><ControlTemplateTargetType="ListBox"><ItemsPresenter></ItemsPresenter></ControlTemplate></ListBox.Template><ListBox.ItemContainerStyle><StyleTargetType="ListBoxItem"><Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListBoxItem"> <ContentPresenter></ContentPresenter> </ControlTemplate> </Setter.Value> </Setter></Style></ListBox.ItemContainerStyle><ListBox.ItemTemplate><DataTemplate><GridMargin="10,0"Background="#09000000"><Grid.ColumnDefinitions><ColumnDefinition></ColumnDefinition><ColumnDefinition></ColumnDefinition><ColumnDefinition></ColumnDefinition><ColumnDefinitionWidth="0.5*"></ColumnDefinition></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinitionHeight="auto"></RowDefinition><RowDefinition></RowDefinition></Grid.RowDefinitions><TextBlockVerticalAlignment="Center"Margin="0,3"Text="{Binding ControllerName}"HorizontalAlignment="Left"></TextBlock><TextBlockGrid.Column="1"VerticalAlignment="Center"Margin="0,3"Text="{Binding CommunicationAddress}"HorizontalAlignment="Left"></TextBlock><TextBlockGrid.Column="2"VerticalAlignment="Center"Margin="0,3"Text="{Binding CommunicationProtocol}"HorizontalAlignment="Left"></TextBlock><TextBlockGrid.Column="3"VerticalAlignment="Center"HorizontalAlignment="Right"><HyperlinkForeground="BlueViolet">点位表</Hyperlink></TextBlock><ItemsControlx:Name="Part_Detail"Visibility="Collapsed"Grid.Row="1"HorizontalContentAlignment="Stretch"Grid.ColumnSpan="4"Background="White"ItemsSource="{Binding Devicves}"><ItemsControl.ItemsPanel><ItemsPanelTemplate><UniformGridColumns="2"></UniformGrid></ItemsPanelTemplate></ItemsControl.ItemsPanel><ItemsControl.ItemTemplate><DataTemplate><GridTextBlock.Foreground="Black"><Grid.ColumnDefinitions><ColumnDefinition></ColumnDefinition><ColumnDefinition></ColumnDefinition><ColumnDefinition></ColumnDefinition><ColumnDefinition></ColumnDefinition></Grid.ColumnDefinitions><TextBlockText="{Binding Name}"Margin="0,3"VerticalAlignment="Center"HorizontalAlignment="Center"></TextBlock><TextBlockGrid.Column="1"Text="{Binding Address}"Margin="0,3"VerticalAlignment="Center"HorizontalAlignment="Center"></TextBlock><TextBlockGrid.Column="2"Text="{Binding Unit}"Margin="0,3"VerticalAlignment="Center"HorizontalAlignment="Center"></TextBlock><TextBlockGrid.Column="3"VerticalAlignment="Center"HorizontalAlignment="Center"><HyperlinkForeground="Blue"Command="{Binding RelativeSource={RelativeSource AncestorType=local:SettingsPage, Mode=FindAncestor}, Path=DataContext.DeleteCommand}"CommandParameter="{Binding}">删除</Hyperlink></TextBlock></Grid></DataTemplate></ItemsControl.ItemTemplate></ItemsControl></Grid><DataTemplate.Triggers><DataTriggerBinding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem, Mode=FindAncestor}, Path=IsSelected}"Value="true"><SetterTargetName="Part_Detail"Property="Visibility"Value="Visible"></Setter></DataTrigger></DataTemplate.Triggers></DataTemplate></ListBox.ItemTemplate></ListBox></GroupBox><GroupBoxHeader="环境检测"x:Name="p2"></GroupBox><GroupBoxHeader="设置3"x:Name="p3"></GroupBox><GroupBoxHeader="设置4"x:Name="p4"></GroupBox><GroupBoxHeader="设置5"x:Name="p5"></GroupBox></StackPanel></Page>

后台导航代码:

private void StackPanel_Click(object sender, RoutedEventArgs e) { if(e.OriginalSource is RadioButton btn) { //定位到指定的位置 frameContent.NavigationService.Navigate(new Uri($"Views/SettingsPage.xaml#{btn.Tag}", UriKind.Relative)); } }

效果:

2,项目效果:

3,项目链接。

https://download.csdn.net/download/lingxiao16888/92865755

http://www.jsqmd.com/news/807472/

相关文章:

  • Veo 2电影级输出失效的5个致命信号(第3个99%人忽略):实时诊断工具+自动修复prompt生成器(附GitHub开源链接)
  • 第二章:AI Agent的“手脚”——Tool
  • 传奇游戏|复古传奇游戏|原始传奇|天尊传奇|众神大陆|战 online|帝王霸业|五款传奇游戏玩法与攻略|602游戏平台剖析
  • AI Agent 时代已来:你准备好拥有“数字员工”了吗?
  • Redis常见管理命令
  • 若依框架菜单管理实战:手把手教你为列表页添加详情页(Vue+Element UI)
  • ChatGPT Instagram内容策略失效真相(92%运营者忽略的算法适配层)
  • 从‘密 码’对齐到响应式排版:深入聊聊CSS中控制空格的几种姿势(附代码对比)
  • 3分钟快速上手:免费开源游戏加速工具OpenSpeedy完整指南
  • Unidbg学习笔记(三):五个后端引擎的性能与取舍
  • 抖音图片怎么去水印?抖音图片去水印方法汇总 + 2026免费工具实测推荐
  • 免费获取米哈游游戏字体终极指南:11款精美开源字体库完整使用教程
  • 专业的SF6气体监测报警装置厂家_公司_装置企业_机构#瑞智开元
  • 职场性别双标:高管离职叙事中的野心表达与家庭理由
  • PaspberryPi推流
  • GTA5线上小助手:免费开源工具让你的洛圣都冒险更轻松
  • 3步快速解密QQ音乐加密文件:qmcdump终极音频转换指南
  • 智能穿戴设备技术演进:从概念到硬件、软件与生态的全面解析
  • Codex-Workspace:多仓库聚合开发与AI编程助手集成实战
  • 从音频分析到VR渲染:构建实时音乐可视化系统的核心技术解析
  • Next-Enterprise:基于Next.js的企业级应用启动模板全解析
  • 6G测试床、原型验证与试验网:探索未来通信的基石
  • 相位噪声原理、测量与工程应用全解析
  • Gemini JavaScript支持性能瓶颈诊断:Lighthouse评分暴跌38%的元凶竟是fetch()封装层?附可复用的性能监控Hook
  • AI 短剧系统快速部署,轻量化搭建,小白也能轻松运营落地
  • 开发者技能树实践:用工程化思维构建可验证的能力成长体系
  • 前端AI工程化落地最后一公里:Gemini + Web Workers + WASM协同架构(附GitHub Star超1.2k的轻量Runtime SDK)
  • Mac本地零代码微调大模型:M-Courtyard实战指南
  • 如何快速掌握开源可视化工具:Keyviz键鼠可视化实战指南
  • 智能网联汽车边缘媒体处理系统架构设计