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

网站建设与企业发展怎么学做电商然后自己创业

网站建设与企业发展,怎么学做电商然后自己创业,画册设计赏析,外贸平台有哪些电商概览随着我们的应用程序越来越受欢迎#xff0c;我们的下一步将要开发多语言功能。方便越来越多的国家使用我们中国的应用程序#xff0c;基于 WPF 本地化#xff0c;我们很多时候使用的是系统资源文件#xff0c;可是动态切换本地化#xff0c;就比较麻烦了。实现思路现在… 概览随着我们的应用程序越来越受欢迎我们的下一步将要开发多语言功能。方便越来越多的国家使用我们中国的应用程序基于 WPF 本地化我们很多时候使用的是系统资源文件可是动态切换本地化就比较麻烦了。实现思路现在我们将要实现的是基于 DotNetCore 3.0 以上版本 and WPF 桌面应用程序模块化的多语言功能。动态切换多语言思路把所有模块的资源文件添加到字典集合。将资源文件里的key绑定到前台。通过通知更改 CurrentCulture 多语言来使用改变的语言文件里的key。通过绑定 Binding 拼接Path 在输出。动态切换我们先来看实现结果第一行是我们的主程序的数据展示用于业务中的本地化第二行是我们业务模块A的数据展示第三行是我们业务模块B的数据展示来看一下xaml展示通过ComboBox选择来切换语言搭建模拟业务项目创建一个WPF App(.NET Core)应用程序创建完成后我们需要引入业务A模块及业务B模块和业务帮助模块使用ResX资源文件在各个模块里添加Strings 文件夹用来包含 各个国家和地区的语言文件。多语言可以参考https://github.com/UnRunDeaD/WPF---Localization/blob/master/ComboListLanguages.txt资源文件可以放在任意模块内比如业务模块A 主程序底层业务控件工具集等创建各个业务模块资源文件Strings文件夹可以任意命名帮助类封装到底层供各个模块调用 public class TranslationSource : INotifyPropertyChanged{public static TranslationSource Instance { get; } new TranslationSource();private readonly Dictionarylt;string, ResourceManagergt; resourceManagerDictionary new Dictionarylt;string, ResourceManagergt;();public string this[string key]{get{Tuplelt;string, stringgt; tuple SplitName(key);string translation null;if (resourceManagerDictionary.ContainsKey(tuple.Item1))translation resourceManagerDictionary[tuple.Item1].GetString(tuple.Item2, currentCulture);return translation ?? key;}}private CultureInfo currentCulture CultureInfo.InstalledUICulture;public CultureInfo CurrentCulture{get { return currentCulture; }set{if (currentCulture ! value){currentCulture value;PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(string.Empty));}}}public event PropertyChangedEventHandler PropertyChanged;public void AddResourceManager(ResourceManager resourceManager){if (!resourceManagerDictionary.ContainsKey(resourceManager.BaseName)){resourceManagerDictionary.Add(resourceManager.BaseName, resourceManager);}}public static Tuplelt;string, stringgt; SplitName(string local){int idx local.ToString().LastIndexOf(.);var tuple new Tuplelt;string, stringgt;(local.Substring(0, idx), local.Substring(idx 1));return tuple;}}public class Translation : DependencyObject{public static readonly DependencyProperty ResourceManagerProperty DependencyProperty.RegisterAttached(ResourceManager, typeof(ResourceManager), typeof(Translation));public static ResourceManager GetResourceManager(DependencyObject dependencyObject){return (ResourceManager)dependencyObject.GetValue(ResourceManagerProperty);}public static void SetResourceManager(DependencyObject dependencyObject, ResourceManager value){dependencyObject.SetValue(ResourceManagerProperty, value);}}public class LocExtension : MarkupExtension{public string StringName { get; }public LocExtension(string stringName){StringName stringName;}private ResourceManager GetResourceManager(object control){if (control is DependencyObject dependencyObject){object localValue dependencyObject.ReadLocalValue(Translation.ResourceManagerProperty);if (localValue ! DependencyProperty.UnsetValue){if (localValue is ResourceManager resourceManager){TranslationSource.Instance.AddResourceManager(resourceManager);return resourceManager;}}}return null;}public override object ProvideValue(IServiceProvider serviceProvider){object targetObject (serviceProvider as IProvideValueTarget)?.TargetObject;if (targetObject?.GetType().Name SharedDp)return targetObject;string baseName GetResourceManager(targetObject)?.BaseName ?? string.Empty;if (string.IsNullOrEmpty(baseName)){object rootObject (serviceProvider as IRootObjectProvider)?.RootObject;baseName GetResourceManager(rootObject)?.BaseName ?? string.Empty;}if (string.IsNullOrEmpty(baseName)){if (targetObject is FrameworkElement frameworkElement){baseName GetResourceManager(frameworkElement.TemplatedParent)?.BaseName ?? string.Empty;}}Binding binding new Binding{Mode BindingMode.OneWay,Path new PropertyPath($[{baseName}.{StringName}]),Source TranslationSource.Instance,FallbackValue StringName};return binding.ProvideValue(serviceProvider);}} 前台绑定 xmlns:extclr-namespace:WpfUtil.Extension;assemblyWpfUtilxmlns:resxclr-namespace:ModuleA.Stringsext:Translation.ResourceManager{x:Static resx:SR.ResourceManager}显示文字lt;Label Content{ext:Loc Test} FontSize21 /gt;后台实现根据业务的需要我们在界面上无法适用静态文字显示的一般通过后台代码来完成对于 code-behind 的变量使用同样可以应用于资源字典。PS: 欢迎各位大佬慷慨指点有不足之处请指出有疑问请指出喜欢它请支持下载地址https://github.com/androllen/WpfNetCoreLocalization相关链接https://github.com/Jinjinov/wpf-localization-multiple-resource-resx-one-language/blob/master/README.md
http://www.yutouwan.com/news/159720/

相关文章:

  • 扬州市邗江区城乡建设局网站北京互联网公司排名
  • 免费浏览网站推广python 网站开发流程
  • 做ppt的软件模板下载网站有哪些哪个网站可以找人做清洁
  • 5个搜索引擎作弊的网站开发公司对设计单位奖惩
  • 免费建网站代理设计网站考虑哪些因素
  • 网站美工和平面设计师wordpress加载不出图
  • 西安seo排名扣费网站seo关键词优化技巧
  • 用ps做招生网站中国志愿者服务网站登录注册
  • 深圳罗湖区网站wordpress多用户博客
  • 课程的网站建设衣联网和一起做网站 哪家强
  • 郑州网站建设yipinpai网站备案 做网站
  • 网站怎么怎么做关键字四川省建设厅官方网站三内人员
  • 自己建网站要学什么医疗器械注册
  • 芜湖市网站建设公司孟州网站建设
  • 做西装的网站广告策划案例范文
  • 周口建设网站一般使用的分辨率的显示密度是多少dpi )
  • 回收网站怎么做百度推送 wordpress
  • 硬盘做免费嗳暧视频网站长春做网站哪家便宜
  • 权威的南通网站建设极智装
  • 1.简述网站建设的步骤免费企业网站创建
  • 织梦网站首页错位网站类软文
  • 网站建设 不违背怎么在wordpress上设计网站
  • 对接公众号的网站怎么做北京比较好的网络营销公司
  • 国企网站建设合同家庭电脑做网站
  • 美轮美奂的网站建设大庆网能做网站吗
  • 网站出现的的问题天津工程信息建设网
  • 上海专业网站建设信息网站开发 报价
  • 中国空间站即将建成站长工具seo优化系统
  • 求职网站开发868868域名查询
  • 江苏股票配资网站建设重庆新闻频道直播在线观看