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

王占山济南优化网站厂家

王占山,济南优化网站厂家,邮箱登录,g3云推广官网目录 一、多语言切换#xff08;需重启#xff09; 1、配置文件添加Key 2、新增附加属性当前选择语言 3、创建资源文件 4、初始化多语言集合 5、切换多语言并更新配置文件 6、应用程序启动根据配置切换多语言 7、使用 二、多语言切换#xff08;无需重启#xff09;…目录 一、多语言切换需重启 1、配置文件添加Key 2、新增附加属性当前选择语言 3、创建资源文件 4、初始化多语言集合 5、切换多语言并更新配置文件 6、应用程序启动根据配置切换多语言 7、使用 二、多语言切换无需重启 1、创建多语言标记扩展基类 2、添加资源转换器 3、创建资源文件 4、继承基类创建指定资源文件扩展 5、添加资源文件管理 6、切换语言 7、使用 8、后台使用多语言 ①获取多语言资源字符串 ②后台绑定 一、多语言切换需重启 1、配置文件添加Key appSettingsadd keylanguage valuezh-CN//appSettings 2、新增附加属性当前选择语言 public CultureInfo SelectLanguage{get (CultureInfo)GetValue(SelectLanguageProperty);set SetValue(SelectLanguageProperty, value);}public static readonly DependencyProperty SelectLanguageProperty DependencyProperty.Register(SelectLanguage, typeof(CultureInfo), typeof(MainWindow)); 3、创建资源文件 4、初始化多语言集合 public ObservableCollectionCultureInfo CultureInfos { get; private set; } new ObservableCollectionCultureInfo();private void Window_Loaded(object sender, RoutedEventArgs e){var dir Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);var curs CultureInfo.GetCultures(CultureTypes.AllCultures);foreach (CultureInfo cur in curs){if (string.IsNullOrWhiteSpace(cur.Name)) continue;string landir Path.Combine(dir, cur.Name);if (Directory.Exists(landir)) CultureInfos.Add(cur);}if (CultureInfos.Any(cur cur.Name.Equals(zh-CN, StringComparison.OrdinalIgnoreCase)) is false){var cur curs.FirstOrDefault(c c.Name.Equals(zh-CN, StringComparison.OrdinalIgnoreCase));if (cur ! null) CultureInfos.Add(cur);}SelectLanguage Thread.CurrentThread.CurrentCulture;} 5、切换多语言并更新配置文件 protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e){base.OnPropertyChanged(e);if (e.Property SelectLanguageProperty){if (SelectLanguage Thread.CurrentThread.CurrentCulture) return;Configuration config ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);if (ConfigurationManager.AppSettings[language] is null)config.AppSettings.Settings.Add(language, SelectLanguage.Name);elseconfig.AppSettings.Settings[language].Value SelectLanguage.Name;config.Save();ConfigurationManager.RefreshSection(appSettings);}} 6、应用程序启动根据配置切换多语言 /// summary/// App.xaml 的交互逻辑/// /summarypublic partial class App : Application{protected override void OnStartup(StartupEventArgs e){base.OnStartup(e);var lan ConfigurationManager.AppSettings[language];if (!string.IsNullOrWhiteSpace(lan)){CultureInfo culture new CultureInfo(lan);Thread.CurrentThread.CurrentCulture culture;Thread.CurrentThread.CurrentUICulture culture;}}} 7、使用 ①映射命名空间 xmlns:rsclr-namespace:WpfApp8.Resources ②示例 GridGroupBox x:NamegboxGridButton Width100Height80BackgroundLightGrayContent{x:Static rs:SRS.TestLan} /ComboBox Width150Height50HorizontalAlignmentLeftVerticalContentAlignmentCenterDisplayMemberPathNativeNameItemsSource{Binding PathCultureInfos, ElementNameMW}SelectedItem{Binding PathSelectLanguage, ElementNameMW} //Grid/GroupBox/Grid 二、多语言切换无需重启 安装Nuget包WpfExtensions.Xaml 1、创建多语言标记扩展基类 /// summary/// 多语言绑定扩展基类 /// /summary/// typeparam nameT多语言文件资源类/typeparam[MarkupExtensionReturnType(typeof(object))]public class LanguageExtensionBaseT : MarkupExtension where T : class{private static readonly ResourceConverter ResourceConverter new ResourceConverter();[ConstructorArgument(Key)]public ComponentResourceKey Key { get; set; }public LanguageExtensionBase(string key){Key new ComponentResourceKey(typeof(T), key);}public override object ProvideValue(IServiceProvider serviceProvider){if (Key null){throw new NullReferenceException(Key cannot be null at the same time.);}IProvideValueTarget provideValueTarget serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;if (provideValueTarget null){throw new ArgumentException(The serviceProvider must implement IProvideValueTarget interface.);}if (provideValueTarget.TargetObject?.GetType().FullName System.Windows.SharedDp){return this;}return new Binding(Value){Source new I18nSource(Key, provideValueTarget.TargetObject),Mode BindingMode.OneWay,Converter ResourceConverter}.ProvideValue(serviceProvider);}} 2、添加资源转换器 /// summary/// 资源转换器/// /summarypublic class ResourceConverter : IValueConverter{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){Bitmap val (Bitmap)((value is Bitmap) ? value : null);if (val null){Icon val2 (Icon)((value is Icon) ? value : null);if (val2 ! null){return ToBitmapSource(val2.ToBitmap());}return value;}return ToBitmapSource(val);}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotSupportedException();}[DllImport(gdi32)]private static extern int DeleteObject(IntPtr o);public ImageSource ToBitmapSource(Bitmap bitmap){IntPtr ptr bitmap.GetHbitmap(); //obtain the HbitmapBitmapSource bitmapSource Imaging.CreateBitmapSourceFromHBitmap(ptr, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());DeleteObject(ptr); //release the HBitmapreturn bitmapSource;}} 3、创建资源文件 4、继承基类创建指定资源文件扩展 /// summary/// 多语言绑定扩展/// /summary[MarkupExtensionReturnType(typeof(object))]internal class LanguageExtension : LanguageExtensionBaseDefaultLanguage{public LanguageExtension(string key) : base(key){}} 5、添加资源文件管理 try {I18nManager.Instance.Add(Resource.ResourceManager); } catch (ArgumentException) { } 6、切换语言 var culture new CultureInfo(en-US); I18nManager.Instance.CurrentUICulture culture; System.Threading.Thread.CurrentThread.CurrentCulture culture; 7、使用 ①映射命名空间到XAML xmlns:Lanclr-namespace:SqlSugarTest.Lan ②资源文件中添加多语言资源 ③示例 GroupBox Header多语言测试Menu HeightNaN HorizontalAlignmentCenterVerticalAlignmentCenterBackground{x:Null}FontSize12 FontWeightBoldMenuItem Margin3 Padding10,8HorizontalAlignmentCenterHorizontalContentAlignmentCenterHeader{Lan:Language MultiLanguage}MenuItem Margin3 Padding10,5ClickMenuItem_Click_CN HeaderCN-中 /MenuItem Margin3 Padding10,5ClickButton_Click_EN HeaderUS-英 /MenuItem Margin3 Padding10,5HeaderTestMenuItem Margin3 Padding10,5Header111 /MenuItem Margin3 Padding10,5Header222 //MenuItem/MenuItem/Menu/GroupBox 8、后台使用多语言 ①获取多语言资源字符串 /// summary/// 获取Key资源/// /summary/// param namekey/param/// param nameresource/param/// returns/returnspublic static string GetString(string key, ResourceManager resource null){if (resource null)return DefaultLanguage.ResourceManager.GetString(key, I18nManager.Instance.CurrentUICulture);elsereturn resource.GetString(key, I18nManager.Instance.CurrentUICulture);} MessageBox.Show(GetString(nameof(DefaultLanguage.Test))); ②后台绑定 static readonly ResourceConverter converter new ResourceConverter();/// summary/// 按自定义数据绑定多语言/// /summary/// typeparam nameT自定义数据源/typeparam/// param namekey数据关键字/param/// returns/returnspublic static BindingBase GetBindingT(string key, object element null){var Key new ComponentResourceKey(typeof(T), key);return new Binding(Value){Source new I18nSource(Key, element),Mode BindingMode.OneWay,Converter converter};} menu_Test.SetBinding(MenuItem.HeaderProperty, GetBindingDefaultLanguage(nameof(DefaultLanguage.Test)));
http://www.hkea.cn/news/14412772/

相关文章:

  • 药学专业网站成都市新津县建设局官方网站
  • 阿里巴巴做网站百度seo整站优化
  • 惠阳东莞网站建设建设网站免费
  • 中山网站备案河北建设银行石家庄分行招聘网站
  • 湖北省建设厅网站杨凯在线p图网页版免费
  • 建设公司网站都需要什么竞价账户托管哪家好
  • 网站开发下载功能如何实现网站建设实验感想
  • 视频网站做电商phpcms网站模版
  • 雄安智能网站建设方案专业的网站优化
  • 肇庆建设银行招聘网站在线视频网站开发成本
  • 东莞网站制作公司报价wordpress怎么连接空间
  • 宁波品牌网站建设公司wordpress 自适应主题 rclean
  • 沈阳做网站优化的公司网站开发专员岗位职责
  • 网站建设公司营业执照衡水武邑县建设局网站
  • 母婴门户网站模板移动端网站怎么提交
  • 专业网站开发费用挑号网站后台怎么更新
  • 创做网站wordpress没有API解析接口怎办
  • 网站开发人员工工资聊城做网站的公司行情
  • 运城网站建设新品发布会海报
  • php网站开发核心技术国内免费素材网站
  • php旅游类网站开发毕业设计网站建设价格很 好乐云seo
  • 展示照片的网站模板wordpress 不显示账号名
  • 系统网站开发娱乐网站怎么制作
  • 动态发布网站和静态发布网站网站正在建设中的
  • 网站加载速度企业宽带
  • 卖酒的网站做线下怎么做网站报备流程
  • led灯外贸网站建设什么是网络营销市场营销学
  • 建个人网站能赚钱吗企业网站建设合同 百度文库
  • 网站排名优化需要多久网站专业建设公司
  • 做网站如何挣钱建设一个网站需要哪些材料