南京网站设计公司哪儿济南兴田德润怎么联系sem推广是什么意思呢

web/2025/10/7 12:35:01/文章来源:
南京网站设计公司哪儿济南兴田德润怎么联系,sem推广是什么意思呢,qq网页版登陆,高新网页设计报价WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换独立观察员 2021 年 8 月 23 日我们平常在 WPF 中进行资源绑定操作#xff0c;一般就是用 StaticResource 或者 DynamicResource 后面跟上资源的 key 这种形式#xff0c;能满足大部分需求。但是有的时候一般就是用 StaticResource 或者 DynamicResource 后面跟上资源的 key 这种形式能满足大部分需求。但是有的时候我们需要绑定的是代表了资源的 key 的变量也就是动态绑定资源的 key注意和 DynamicResource 区分开比如本文将要演示的支持国际化的场景。这种动态绑定资源 key 的功能在 WPF 中没有被原生支持所以还是得在网上找找解决方法。 最终在 stackoverflow 网站上看到一篇靠谱的讨论帖Binding to resource key, WPF里面几个人分别用 标记扩展、附加属性、转换器 的方式给出了解决方法本文使用的是 Gor Rustamyan 给出的 标记扩展 的方案核心就是一个 ResourceBinding 类代码整理了下下文给出。 先来看看本次的使用场景吧简单来说就是一个下拉框控件绑定了键值对列表显示的是其中的键但是要求是支持国际化多语言如下图  由于要支持多语言所以键值对的键不是直接显示的值而是显示值的资源键/// summary /// 时间列表 /// /summary public ObservableCollectionKeyValuePairstring, int TimeList { get; set; } new ObservableCollectionKeyValuePairstring, int() {new KeyValuePairstring, int(LockTime-OneMinute, 1),new KeyValuePairstring, int(LockTime-FiveMinute, 5),new KeyValuePairstring, int(LockTime-TenMinute, 10),new KeyValuePairstring, int(LockTime-FifteenMinute, 15),new KeyValuePairstring, int(LockTime-ThirtyMinute, 30),new KeyValuePairstring, int(LockTime-OneHour, 60),new KeyValuePairstring, int(LockTime-TwoHour, 120),new KeyValuePairstring, int(LockTime-ThreeHour, 180),new KeyValuePairstring, int(LockTime-Never, 0), };字符串资源放在资源字典中 界面 Xaml 代码为xmlns:markupExtensionsclr-namespace:Mersoft.Mvvm.MarkupExtensionsGroupBox Header演示 ComboBox 绑定资源键国际化支持 Height100StackPanel OrientationHorizontalComboBox MinWidth200 MaxWidth400 Height35 Margin10 FontSize18 VerticalContentAlignmentCenterItemsSource{Binding TimeList} SelectedItem{Binding SelectedTime}ComboBox.ItemTemplateDataTemplateTextBlock Text{markupExtensions:ResourceBinding Key}/TextBlock/DataTemplate/ComboBox.ItemTemplate/ComboBoxButton Width100 Command{Binding SwitchCnCmd} 切换中文 /ButtonButton Width100 Command{Binding SwitchEnCmd} 切换英文 /ButtonTextBlock Text{markupExtensions:ResourceBinding SelectedTime.Key} VerticalAlignmentCenter/TextBlock/StackPanel /GroupBox可以看到给 ComboBox 的 ItemTemplate 设置了一个 DataTemplate里面通过 TextBlock 来绑定键值对中的 Key。关键在于此处不是使用普通的 Binding而是使用了自定义的标记扩展 ResourceBinding其代码如下using System; using System.ComponentModel; using System.Globalization; using System.Windows; using System.Windows.Data; using System.Windows.Markup;namespace Mersoft.Mvvm.MarkupExtensions {/// summary/// 用于处理 绑定代表资源键 (key) 的变量 业务的标记扩展类/// markup extension to allow binding to resourceKey in general case./// https://stackoverflow.com/questions/20564862/binding-to-resource-key-wpf/// /summary/// example/// code/// (Image Source{local:ResourceBinding ImageResourceKey}//// /code/// /examplepublic class ResourceBinding : MarkupExtension{#region Helper propertiespublic static object GetResourceBindingKeyHelper(DependencyObject obj){return (object)obj.GetValue(ResourceBindingKeyHelperProperty);}public static void SetResourceBindingKeyHelper(DependencyObject obj, object value){obj.SetValue(ResourceBindingKeyHelperProperty, value);}// Using a DependencyProperty as the backing store for ResourceBindingKeyHelper. This enables animation, styling, binding, etc...public static readonly DependencyProperty ResourceBindingKeyHelperProperty DependencyProperty.RegisterAttached(ResourceBindingKeyHelper, typeof(object), typeof(ResourceBinding), new PropertyMetadata(null, ResourceKeyChanged));static void ResourceKeyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e){var target d as FrameworkElement;var newVal e.NewValue as Tupleobject, DependencyPropertyif (target null || newVal null)return;var dp newVal.Item2;if (newVal.Item1 null){target.SetValue(dp, dp.GetMetadata(target).DefaultValue);return;}target.SetResourceReference(dp, newVal.Item1);}#endregionpublic ResourceBinding(){}public ResourceBinding(string path){Path new PropertyPath(path);}public override object ProvideValue(IServiceProvider serviceProvider){var provideValueTargetService (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget));if (provideValueTargetService null)return null;if (provideValueTargetService.TargetObject ! null provideValueTargetService.TargetObject.GetType().FullName System.Windows.SharedDp)return this;var targetObject provideValueTargetService.TargetObject as FrameworkElement;var targetProperty provideValueTargetService.TargetProperty as DependencyProperty;if (targetObject null || targetProperty null)return null;#region bindingBinding binding new Binding{Path Path,XPath XPath,Mode Mode,UpdateSourceTrigger UpdateSourceTrigger,Converter Converter,ConverterParameter ConverterParameter,ConverterCulture ConverterCulture,FallbackValue FallbackValue};if (RelativeSource ! null)binding.RelativeSource RelativeSource;if (ElementName ! null)binding.ElementName ElementName;if (Source ! null)binding.Source Source;#endregionvar multiBinding new MultiBinding{Converter HelperConverter.Current,ConverterParameter targetProperty};multiBinding.Bindings.Add(binding);multiBinding.NotifyOnSourceUpdated true;targetObject.SetBinding(ResourceBindingKeyHelperProperty, multiBinding);return null;}#region Binding Members/// summary/// The source path (for CLR bindings)./// /summarypublic object Source { get; set; }/// summary/// The source path (for CLR bindings)./// /summarypublic PropertyPath Path { get; set; }/// summary/// The XPath path (for XML bindings)./// /summary[DefaultValue(null)]public string XPath { get; set; }/// summary/// Binding mode/// /summary[DefaultValue(BindingMode.Default)]public BindingMode Mode { get; set; }/// summary/// Update type/// /summary[DefaultValue(UpdateSourceTrigger.Default)]public UpdateSourceTrigger UpdateSourceTrigger { get; set; }/// summary/// The Converter to apply/// /summary[DefaultValue(null)]public IValueConverter Converter { get; set; }/// summary/// The parameter to pass to converter./// /summary/// value/value[DefaultValue(null)]public object ConverterParameter { get; set; }/// summary/// Culture in which to evaluate the converter/// /summary[DefaultValue(null)][TypeConverter(typeof(System.Windows.CultureInfoIetfLanguageTagConverter))]public CultureInfo ConverterCulture { get; set; }/// summary/// Description of the object to use as the source, relative to the target element./// /summary[DefaultValue(null)]public RelativeSource RelativeSource { get; set; }/// summary/// Name of the element to use as the source/// /summary[DefaultValue(null)]public string ElementName { get; set; }#endregion#region BindingBase Members/// summary/// Value to use when source cannot provide a value/// /summary/// remarks/// Initialized to DependencyProperty.UnsetValue; if FallbackValue is not set, BindingExpression/// will return target propertys default when Binding cannot get a real value./// /remarkspublic object FallbackValue { get; set; }#endregion#region Nested typesprivate class HelperConverter : IMultiValueConverter{public static readonly HelperConverter Current new HelperConverter();public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture){return Tuple.Create(values[0], (DependencyProperty)parameter);}public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture){throw new NotImplementedException();}}#endregion} }主要就是继承 MarkupExtension 并重写 ProvideValue 方法具体的本人也没怎么研究就先不说了大家感兴趣可以自己查一查。这里直接拿来使用可以达到动态绑定资源 key 的目的。 如果使用的是普通的 Binding则只能显示原始值 最后来看看中英文切换当然如果有其它语言也是一样可以切换的。首先是移除现有语言资源的方法/// summary /// 语言名称列表 /// /summary private readonly Liststring _LangKeys new Liststring() { en-us, zh-cn };/// summary /// 移除语言资源 /// /summary /// param nameremoveKeyList 需要移除的资源中包含的 key 的列表默认为空为空移除所有的 /param private void RemoveLangThemes(Liststring removeKeyList null) {if (removeKeyList null){removeKeyList _LangKeys;}var rd Application.Current.Resources;ListResourceDictionary removeList new ListResourceDictionary();foreach (var dictionary in rd.MergedDictionaries){// 判断是否是对应的语言资源文件bool isExists removeKeyList.Exists(x dictionary.Contains(LangName) dictionary[LangName] x);if (isExists){removeList.Add(dictionary);}}foreach (var removeResource in removeList){rd.MergedDictionaries.Remove(removeResource);} }主要是对 Application.Current.Resources.MergedDictionaries 进行操作移除有 LangName 键且值为对应语言代号的资源字典。 然后是应用对应语言资源的方法及调用/// summary /// 应用语言 /// /summary /// param namepackUriTemplate 资源路径模板形如/WPFPractice;component/Resources/Language/{0}.xaml/param /// param namelangName 语言名称形如zh-cn/param private void ApplyLanguage(string packUriTemplate, string langName zh-cn) {var rd Application.Current.Resources;//RemoveLangThemes();var packUri string.Format(packUriTemplate, langName);RemoveLangThemes(new Liststring() { langName });// 将资源加载在最后优先使用rd.MergedDictionaries.Add((ResourceDictionary)Application.LoadComponent(new Uri(packUri, UriKind.Relative))); }/// summary /// 语言资源路径模板字符串 /// /summary private string _LangResourceUriTemplate /WPFPractice;component/Resources/Language/{0}.xaml;/// summary /// 命令方法赋值在构造方法中调用 /// /summary private void SetCommandMethod() {SwitchCnCmd ?? new RelayCommand(o true, async o {ApplyLanguage(_LangResourceUriTemplate, zh-cn);});SwitchEnCmd ?? new RelayCommand(o true, async o {ApplyLanguage(_LangResourceUriTemplate, en-us);}); }逻辑就是先移除要切换到的语言资源的已存在的实例然后将新的实例放在最后以达到比其它语言资源如果有的话更高优先级的目的。 源码地址https://gitee.com/dlgcy/Practice/tree/Blog20210823发行版地址https://gitee.com/dlgcy/Practice/releases/Blog20210823 WPF【翻译】WPF 中附加行为的介绍 Introduction to Attached Behaviors in WPFWPF 使用 Expression Design 画图导出及使用 Path 画图WPF MVVM 弹框之等待框解决 WPF 绑定集合后数据变动界面却不更新的问题使用 ObservableCollectionWPF 消息框 TextBox 绑定新数据时让光标和滚动条跳到最下面真・WPF 按钮拖动和调整大小WPF MVVM 模式下的弹窗WPF 让一组 Button 实现 RadioButton 的当前样式效果WPF 原生绑定和命令功能使用指南WPF 用户控件的自定义依赖属性在 MVVM 模式下的使用备忘在WPF的MVVM模式中使用OCX组件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广西网站建设营销公司可以直接进入网站的正能量网站

目录 1.前言 2.生成指定网段的IP字典自动化脚本 1.前言 在可回显的服务端跨站请求伪造(SSRF)漏洞中,我们通常会利用该漏洞进行内网资产探测。最近正好碰到了。写了一个小脚本。 2.生成指定网段的IP字典自动化脚本 脚本可指定协议、IP段、和端口生成字典。 get-Intranet-A…

廊坊哪里有制作手机网站的自己干电商如何下手

转【作者:一去丶二三里 博客地址:http://blog.csdn.net/liang19890820】 简述 语法高亮是文本编辑器用来显示文本的,特别是源代码,根据不同的类别来用不同的颜色和字体显示。这个功能有助于编写结构化的语言,例如&…

假发外贸网站模板阿里云建网站教程

网络编程是每个开发人员工具箱中的核心部分,我们在学习了诸多Java的知识后,也将步入几个大的方向,Java网络编程就是其中之一。 如今强调网络的程序不比涉及网络的更多。除了经典的应用程序,如电子邮件、Web浏览器和远程登陆外&…

wordpress怎么弄主题sem seo是什么意思呢

为什么要使用事务 日常开发中,很多操作,不是通过一个SQL就能完成的,往往需要多个SQL配合完成 当执行多个SQL操作的时候,如果中间出现了特殊的情况(程序崩溃,系统奔溃,网络断开,主机…

房地产网站建设招商电脑游戏排行榜2020前十名

这是一个以故障为主题的专业级电影故障闪光效果视频过渡pr转场模板。使用这些效果来增强视觉效果。包含视频教程。适用软件:Premiere Pro 2023|分辨率:38402160(4K) 来自PR模板网:https://prmuban.com/36092.html

网站优秀网站地址专业团队英文

老A说的一句话让我很受启发,想要深入了解框架,你要把精力聚焦在架构设计的层面来思考问题。而透彻了解底层原理,最好的笨办法就是根据原理对框架核心进行重建或者说再造。看起来没有捷径,也是最快的捷径。相信很多读者已经看过老A…

没有备案号的网站中铁建设集团集采网站

100. 相同的树 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: p [1,2,3], q [1,2,3] 输出&#xff1…

沭阳城乡建设局网站怎么看网站做的好不好

洗鞋店小程序,干洗店软件,洗护行业小程序,上门取衣小程序,预约干洗小程序,校园干洗店小程序,工厂干洗店小程序,干洗店小程序开发,成品软件开发 洗衣工厂软件、功能强大! 包含以下主要功能: * 用户选择洗护用品&#x…

网站续费会计分录怎样做百度域名注册查询

把可能的进行二分判断&#xff0c;判断的时候尽量向右取&#xff0c;一直取到不能去为止&#xff0c;这样才有可能成功分割。 判断是否可以把up作为最大值的代码&#xff1a; bool judge(LL up){if(up < Big) return false; //Big是数组中最大值&#xff0c;如果up小于最大值…

网站备案有哪些费用网络科技公司企业文化

单例模式是校招中最常考的设计模式之一. 设计模式其实就是类似于“规章制度”&#xff0c;按照这个套路来进行操作。 单例模式能保证某个类在程序中只存在唯一 一份实例。而不会创建出多个实例&#xff0c;如果创建出了多个实例&#xff0c;就会编译报错。而不会创建出多个实…

别人网站 自己的二级域名受雇去建设网站类网站

在 QML 中&#xff0c;Column 和 Row 是常用的布局元素&#xff0c;用于水平&#xff08;Row&#xff09;和垂直&#xff08;Column&#xff09;排列它们的子元素。以下是这两个元素的主要属性列表&#xff1a; Column 属性 spacing: 子元素之间的垂直间隔。width 和 height:…

人防网站建设与服务济宁那家做网站最好

[算法日志]图论刷题: 沉岛思想的运用 leetcode 695 岛屿最大面积 给你一个大小为 m x n 的二进制矩阵 grid . 岛屿 是由一些相邻的 1 (代表土地) 构成的组合, 这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻. 你可以假设 grid 的四个边缘都被 0&#xff08…

网站当地备案企业网站建设结论

想象一下,一家公司在芬兰 Google Cloud 数据中心的服务器上托管一个网站。对于欧洲用户来说,加载可能需要大约 100 毫秒,但对于墨西哥用户来说,加载需要 3-5 秒。幸运的是,有一些策略可以最大限度地减少远程用户的请求延迟。 这些策略称为缓存和内容交付网络 (CDN),它们是…

网站后台文章字体什么2007做视频网站

目录 网络Internet &#xff08;互联网或互连网&#xff09;Internet&#xff08;因特网&#xff09;待续、更新中 网络 指将分布在不同地理位置的、相同或不同类型的网络通过网络互连设备&#xff08;中继器、网桥、路由器或网关等&#xff09;相互连接&#xff0c;形成一个范…

交易类网站建设功能表怎么下载网站动态图片

1、什么是内存对齐 计算机系统对基本类型数据在内存中放的位置做了限制,它们会要求这些数的首地址是一个数(一般为4和8)的整数倍,我们看下结构体的大小 #include <stdio.h> struct A {char a;int b; };int main() {printf("size of struct A is %d\n", sizeo…

做网站公司还有没有活路dedecms做中英文网站

Swin UNetR&#xff1a;把 UNet 和 Swin Transformer 结合 网络结构使用指南 前置知识&#xff1a;Swin Transformer&#xff1a;将卷积网络和 Transformer 结合 Swin UNetR 结合 Swin Transformer 的上下文建模能力和 U-Net 的像素级别预测能力&#xff0c;提高语义分割任务的…

温州中豪网站建设推广全国最大房产网络平台

简介 前面介绍了scanner可以扫描某个包路径下的所有bean&#xff0c;我们最常用的也是通过ComponentScan指定包路径去扫描&#xff0c;在SpringBoot中也是如此&#xff0c;本文将介绍spring扫描的逻辑 BeanDefinitionRegistryPostProcessor 知道了ComponentScan的作用&#…

深圳市盐田区住房和建设局网站正安县网站seo优化排名

文章目录题目描述解析代码题目描述 解析 第一感觉&#xff1a;啥都没感觉出来。。。 直接拿动态规划高精做的 但是只能拿40 重新分析一下这道题&#xff1a; g&#xff08;x&#xff09;首先可以拿快速幂很容易的求出来 问题就转化为了**把g(x)个东西分成k份的方案数 其实答案…

网站推广推广WordPress显示403

初涉的话先留坑吧 题目大意 $\sum_{i_1}^{a_1}\sum_{i_2}^{a_2}\cdots\sum_{i_m}^{a_m}(i_1,i_2,\cdots,i_m)$ $a_i<1e6,2<m<10$ 题目分析 首先寄存两篇比较好的博客&#xff1a; 1.铃悬的数学小讲堂——狄利克雷卷积与莫比乌斯反演 2.[学习笔记]莫比乌斯反演常见模型…

php 企业网站模板开发者门户网站是什么意思

1. 竞争市场 1.1. 算法、大数据、超级平台的风起云涌似乎预示了市场竞争机制的加速终结&#xff0c;而我们似乎也对这种市场机制的衰退见怪不怪 1.1.1. 它有效节省了消费者的搜寻成本&#xff0c;降低了市场准入壁垒&#xff0c;开辟了市场扩张与准入之间的崭新通道&#xff…