-
在MvvmLight框架下
-
MainView.xmal中放置ContentControl 控件,两个button按钮
<ContentControl x:Name="contentcontrol1" Content="{Binding MainContent}"/>
<Button
Name="tab1"
Command="{Binding tabCommand}"
CommandParameter="tab1"
Content="tab1" />
<Button
Name="tab2"
Command="{Binding tabCommand}"
CommandParameter="tab2"
Content="tab2" />
- 创建Page1.xmal 和Page2.xmal, 在Page1.xmal.cs中添加
public static Page1 instance;
public static Page1 Instance
if (instance == null)
Console.WriteLine("new Page1.................");
instance = new Page1();
return instance;
- 在 MainView.xmal对应的 MainViewModel.cs中添加
public RelayCommand<object> tabCommand { get; set; }
this.tabCommand = new RelayCommand<object>(ChangeTab);
private void ChangeTab(object o)
string parameter = (string)o;
switch (parameter)
default:
break;
case "tab1":
this.MainContent = new Frame() { Content = Page1.Instance };
break;
case "tab2":
this.MainContent = new Frame() { Content = Page2.Instance };
break;
在MvvmLight框架下MainView.xmal中放置ContentControl 控件,两个button按钮<ContentControl x:Name="contentcontrol1" Content="{Binding MainContent}"/><Button Name="tab1" Command="{Binding tabCommand}" CommandParameter="tab1" Content="tab1" />.
wpf的主窗口和多个Page的切换,用主窗口的Frame控件实现。
切换Page子窗口的时候,保留父窗口的界面。主要的思路实际就是在主窗口设置多个属性,这些属性均是对Frame内容的赋值。但是初始化的时候value是空的,赋值为空,也就是主窗口不显示Page的内容。
属性其实是为了外界对封装好的类内部字段的读写。
这个代码中只有对字段page_Fund 、page_Confirm的写操作(set)...
https://www.cnblogs.com/lelehellow/p/6026766.html(重点)
https://www.cnblogs.com/ZXdeveloper/p/4479721.html
https://www.cnblogs.com/dengheju...
最近在处理一个功能:在page页面加载时导入已有配置,在page页面被关闭时也要相应更新修改过的配置。
初步解决方案,当然是响应此page的loaded事件和unloaded事件,如下:
private void Page_Loaded(object sender, RoutedEventArgs e)
string strXmlFi
使用wpf程序常常会出现一个问题,那就是内存占用过高,使用wpf的程序功能越复杂往往用着用着内存就本着90往上去了。
一方面wpf本身是一个ui框架,对图像以及界面的渲染虽然提高了软件的美观性,但实际使用过程中调用和消耗了大量的内存来进行协同处理;
另一方面这些调用的内存的确在使用完成之后并没有进行主动的释放或者是只是自动释放了一部分,即对于托管资源通过GC自动清理回收。对于非托管资源,通过代码调用手动进行清除,再由GC回收。例如流,数据库连接,网络连接等,所以就需要我们主动定时的对内存进行回收释放的处理。
WPF(Windows Presentation Foundation)是一种用于创建 Windows 桌面应用程序的技术。WPF 左侧菜单右侧切换窗口的做法是一种常见的界面设计方式,可以使用户方便地导航和访问应用程序的各个部分。
在实现时,通常会在左侧创建一个菜单控件,用来列出应用程序的主要功能模块或者页面。当用户选择菜单中的某个项时,右侧的主窗口区域会切换到对应的页面。这种方式可以让用户在不同的操作页面之间快速切换,并且通过菜单栏的布局和命名方式,比较容易地识别页面内容及其用途。
在 WPF 中,可以使用类似于 TreeView 控件的结构(树形结构)来实现菜单栏,然后在选中某个菜单项时,根据其对应的视图类在右侧区域动态生成相应的用户界面。此外,在实现过程中还可以使用视图模型(ViewModel)来对用户操作进行响应和控制,同时利用绑定(binding)技术将数据模型(Model)与界面元素(View)进行连接,使得数据的更新和呈现都可以自动完成。
总之,WPF 左侧菜单右侧切换窗口方式可以提高应用程序的使用效率和用户体验,同时也是 WPF 技术中常用的界面设计方式之一。
所以新手使用celery很仔细的建立文件夹名字、文件夹层级、python文件名字。
所以网上的celery博客教程虽然很多,但是并不能学会使用,因为要运行起来需要以下6个方面都掌握好,博客文字很难表达清楚或者没有写全面以下6个方面。
celery消费任务不执行或者报错NotRegistered,与很多方面有关系,如果要别人排错,至少要发以下6方面的截图,因为与一下6点关系很大。
1)整个项目目录结构, 2)@task入参 ,3)celery的配置,4)celery的配置 include ,5)cmd命令行启动参数 --queues= 的值,6)用户在启动cmd命令行时候,用户所在的文件夹。
在不规范的文件夹路径下,使用celery难度很高,一般教程都没教。
[项目文件夹目录格式不规范下的celery使用演示](https://github.com/ydf0509/celery_demo) 。
此国产分布式函数调度框架 funboost python万能通用函数加速器 https://funboost.readthedocs.io/ ,
从用法调用难度,用户所需代码量,超高并发性能,qps控频精确程度,支持的中间件类型,任务控制方式,稳定程度等19个方面全方位超过celery。发布性能提高1000%,消费性能提高2000%。
pip install funboost
2022年1月份Halcon的使用方法
huangle63: