首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换

WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换 独立观察员 2021 年 8 月 23 日 我们平常在 WPF 中进行资源绑定操作,一般就是用 StaticResource...这种动态绑定资源 key 的功能,在 WPF 中没有被原生支持,所以还是得在网上找找解决方法。...最终在 stackoverflow 网站上看到一篇靠谱的讨论帖(Binding to resource key, WPF),里面几个人分别用 标记扩展、附加属性、转换器 的方式给出了解决方法,本文使用的是...先来看看本次的使用场景吧,简单来说就是一个下拉框控件绑定了键值对列表,显示的是其中的键,但是要求是支持国际化(多语言),如下图: 由于要支持多语言,所以键值对的键不是直接显示的值,而是显示值的资源键...这里直接拿来使用,可以达到动态绑定资源 key 的目的。 如果使用的是普通的 Binding,则只能显示原始值: 最后来看看中英文切换,当然,如果有其它语言,也是一样可以切换的。

2K31

WPF备忘录(3)如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter

但是,WPF中的DataGrid 不同于Windows Forms中的 DataGridView。 ...但是,在WPF中我们可以通过可视树(VisualTree) 去进入到控件“内部“, 那么,我们当然可以通过VisualTree进入DataGrid中的DataGridRow 和 DataGridCellsPresenter...使用值转换器进行绑定数据的转换IValueConverter  有的时候,我们想让绑定的数据以其他的格式显示出来,或者转换成其他的类型,我们可以 使用值转换器来实现.比如我数据中保存了一个文件的路径...FileInfo fi = new FileInfo((string)value); return fi.Name; } //ConvertBack方法将显示值转换成原来的格式.../Window.Resources> 现在我们去绑定数据的地方使用StaticResource来指向转换器 <Binding

5.6K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    《深入浅出WPF》学习笔记之深入浅出话Binding

    ,UI上关心哪个属性值的变化呢?...PropertyChanged,一旦绑定的属性值改变,源会立即更新。 View Code 6.3.3 Binding的路径(Path)   即绑定到底需要关注哪个属性的值。...其实,“Binding沿着UI元素树网上找”只是WPF给我们的一个错觉,实际是因为DataContext是一个“依赖属性”,当控件的依赖属性没有显式赋值时,依赖属性值会沿UI元素树向下传递。   ...DataContext的用法:   *当UI上多个控件Binding同一个对象时   *当Source对象不能被直接访问时——比如B窗体内的控件想把A窗体内的控件当做Binding源,但A窗体内的控件是...  Binding的作用是Source与Target之间的桥梁,当Binding两端要求使用不同的数据类型时,我们可以为数据设置转换器。

    5.7K10

    【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题

    .什么是WPF的值转换器?...值转换器充当目标和源之间的桥梁,当目标与一个源绑定数据类型不一致时,需要值转换器来做中转。例如有一个文本框和一个按钮控件, 当文本框的文本被填充或为空时,希望启用或禁用按钮控件。...在这种情况下,需要将字符串数据转换为布尔值。这可以使用值转换器实现。...这是一种使 xaml 中的任何内容都能够被给定名称引用的技术。 22.ListBox 与 ListView - 如何选择以及何时进行数据绑定?...进行命中测试相对来源 (FindAncestor) 28.在WPF应用程序集中添加新文件时,Page和Window有什么区别?页面旨在用于导航应用程序(通常带有后退和前进按钮,例如浏览器)。

    53322

    WPF面试题大全,秒杀面试官必备

    14、简述WPF会取代DirectX吗 ? 15、在WPF项目什么是App.xaml? 16、简述什么是WPF中的值转换器 ?...例如,将一个Slider的值与ViewModel的Age属性进行绑定,并使用一个转换器将值从整数转换为字符串: 值转换器一起使用,实现平滑的动画效果和值的转换。 • 属性更改通知:依赖属性提供属性更改通知,使开发人员可以在属性值发生变化时做出相应的响应。 这道题好难啊。...16、简述什么是WPF中的值转换器 ? 答:WPF 中的值转换器 (Value Converter) 是一种用于在数据绑定时在源值和目标值之间进行转换的类。...这些转换器可以在绑定数据时改变数据的表示形式,使得数据能够以适合于特定上下文的方式显示。

    91410

    win10 uwp 如何使用DataTemplate 转换绑定Event到Command绑定 ObservableCollectionDataTemplate 绑定 ViewM

    数据模板有绑定的问题。 我们使用Binding和WPF其实没有多少不同,在Mode只有OneWay,OneTime,TwoWay。我们使用的x:bind在DataTemplate才和原来有一些不同。...但是我们在 ViewModel 的类型是 bool,那么我们就需要用转换器。转换器就是继承 IValueConverter 的一个类。 UWP的 Convert 和 WPF 差不多。...数据转换一个简单方法是另外在 ViewModel 写一个属性,这个属性用于转换变量,然后在前台绑定,但是这样做不好,于是我们比较好的一个做法是做转换器,转换器是一个类,我们需要实现它才能使用,在我们常用的做法是把它写...第二个,可以使用依赖属性,在获得值判断 e.NewValue 是 INotifyCollectionChanged ,获得 CollectionChanged 的添加新项就可以。...因为 Grid 的数据绑定 ViewModel,所以在 WPF 可以使用 Binding RelativeSource={RelativeSource AncestorType={x:Type Grid

    2.7K20

    WPF面试题-来自ChatGPT的解答

    在WPF(Windows Presentation Foundation)中,值转换器(Value Converter)是一种实现IValueConverter接口的类,用于在绑定过程中将一个值转换为另一个值...值转换器通常用于以下情况: 数据类型转换:当绑定的源数据类型与目标属性的类型不匹配时,值转换器可以将源数据转换为目标类型,以便正确地显示或使用。...数据适配:当绑定的源数据与目标属性的数据结构不匹配时,值转换器可以将源数据适配为目标属性所需的数据结构,以便正确地显示或使用。...在双向绑定时,当目标属性的值发生变化时,该方法会被调用,开发人员可以根据需要将目标数据转换回源数据,并返回转换后的值。 值转换器可以通过在XAML中的绑定表达式中使用Converter属性来指定。...通过使用值转换器,开发人员可以更灵活地处理数据绑定过程中的数据转换、格式化和适配,以满足特定的需求。 13. XAML 文件中的 xmlns 是什么?

    44730

    WPF 桌面端开发 8-DependencyProperty

    (值继承) WPF Designer integration(WPF 设计集成) Resources(资源)和 Data binding(数据绑定) 在Resources和Data binding中,XAML...,然后 WPF 会使用一个 Clock 让属性值进行变化从而产生动画效果。...因此,有了 DependencyProperty,我们可以放心的使用Markup Extension,Setter等等一系列令人激动的功能了,这影响的功能还不只这些,WPF 中实现的数据绑定,动画等等强大功能...WPF 中并没有传统窗体重绘的机制,所谓“重绘”,是通过 DependencyProperty 的自动更新属性值来进行的。...这些功能都通过一定的机制被 DependencyProperty 完美的实现了,当我们需要使用这些功能的时候,我们只需要自定义一个 DependencyProperty 来实现就行了 WPF 的所有

    75020

    使用通用附加属性来减少 WPF 元素自定义样式的多余代码

    比如为了设置圆角,我约定了使用 Button 的 TabIndex,然后控件模板中绑定给 Border 的 CornerRadius,并使用了 ObjectToIntConverter 转换器。...2、绑定不够直接,借用的属性类型往往与最终类型不同,需要加转换器。 3、占用原有属性,因为一旦被借用了,就不能用于原来的用途了,万一其它同事在使用的地方按照原意来使用这个被借用的属性,就会闹出笑话。...这里有一个设置圆角的例子: 这里样式中绑定了 WpfXamlPropProxy.CornerRadius,默认值为 5,在元素或者子样式中就可以对其更换为其它的值: 四、使用附加属性让控件模板可共用...4.1、问题:给触发器中要设定的值绑定附加属性没效果 现象:在元素样式的控件模板的Triggers 中,在某个 Trigger 的某个 Setter 的 Value 中想绑定样式中设置的某个附加属性,结果提示找不到该属性...: 其它错误示范:如果在 Trigger(的 Setter)中直接使用 TemplateBinding,则直接会报错(不是有效值): 网上的讨论: 关于 wpf:具有附加属性的模板绑定 | 码农家园

    2K20

    《深入浅出WPF》——模板学习

    (流动在控件之间的是事件) ~~~~ 数据驱动,则是用户通过控件去改变控件绑定的数据,因为数据变了,与该数据绑定的控件都会发生变化。...(一般外部控件的绑定是Binding,可见内部控件的绑定与外部控件还是做了一定区分的)将自己的属性值关联在目标控件的某个属性上,必要的时候还可以添加Converter。...~~~~ 把DataTemplate应用在某个数据类型上的方法是设置DataTemplate的的DataType属性,并且DataTemplate作为资源时也不能带有x:Key标记。...你可能会想:“这样一来,万一我想从外界访问Template内部的控件、获取它的属性值,岂不是做不到了?”放心,WPF为我们准备了访问控件内部小世界的入口,现在就让我们出发去寻找那些失落的控件!...DataTemplate的FindName方法获取由DataTemplate生成的控件并访问其属性,被注释的代码是直接使用底层数据。

    5K10

    WPF 笔刷绑定不上可能的原因

    在 WPF 中如背景色等都是使用笔刷,在使用绑定的时候可能绑定不上,本文告诉大家绑定不上可能的原因和调试方法 有小伙伴问我为什么他的背景绑定不上,他的代码如下 转换器里面绑定的返回值是 Color 而 Background 的需要的值是 Brush 所以绑定不上 修复方法是不返回 Color 应该返回 Brush 就可以 调试 XAML 绑定可以通过在...VisualStudio 的选项开启输出绑定信息 在工具 选项 调试 输出窗口 可以看到绑定的输出,将这一项设置为详细就可以输出很多调试信息,如上面代码将会输出绑定返回值 System.Windows.Data...,同时没有设置绑定失败使用的值;将使用默认值代替。...WPF 如何调试 binding

    61440

    WPF 在绑定表达式添加计算

    很多时候一些简单的使用绑定需要对绑定的源做处理就需要通过转换器,这样的代码写起来不好看 本文告诉大家通过一个简单的库可以实现在界面绑定的时候通过表达式不需要转换 首先通过 Nuget 安装 CalcBinding...Invoke(this, new PropertyChangedEventArgs(propertyName)); } } 这时在界面如果需要创建一个 TextBlock 绑定三个值...-- wrong --> 可以绑定静态的值,静态的值的写法 xmlNamespace:Class.StaticProperty.NestedProperty 命名空间下的类的静态属性的属性 对于经常计算值这里也可以简单使用...Binding Math.Sin(A*Math.PI/180), StringFormat={}{0:n5} }"/> 枚举值也可以点命名空间的枚举的值...expressions in Path property and other features ---- 本文会经常更新,请阅读原文: https://lindexi.gitee.io/post/WPF

    5.1K10

    WPF 笔刷绑定不上可能的原因

    在 WPF 中如背景色等都是使用笔刷,在使用绑定的时候可能绑定不上,本文告诉大家绑定不上可能的原因和调试方法 有小伙伴问我为什么他的背景绑定不上,他的代码如下 转换器里面绑定的返回值是 Color 而 Background 的需要的值是 Brush 所以绑定不上 修复方法是不返回 Color 应该返回 Brush 就可以 调试 XAML 绑定可以通过在...VisualStudio 的选项开启输出绑定信息 在工具 选项 调试 输出窗口 可以看到绑定的输出,将这一项设置为详细就可以输出很多调试信息,如上面代码将会输出绑定返回值 System.Windows.Data...=''); target property is 'Background' (type 'Brush') 翻译一下 System.Windows.Data Information: 10 : 无法接受绑定的返回值...,同时没有设置绑定失败使用的值;将使用默认值代替。

    98640

    一站式WPF--依赖属性(DependencyProperty)二

    如果从第一步得到的值是一个表达式值(Expression),比如说一个绑定,WPF属性系统需要把它转化成一个实际值。 第三步,动画。...WPF对属性赋值进行了优化,当属性被修改时,首先会调用Validate来判断传入的值是否有效,如果无效就不调用后面的操作,以提高性能。...当然,这个值已经被存到LocalValue上了。...你在后台代码中调用sDo.Value = 2,那么Value的set会被调用,但如果你在XAML赋值或者把它绑定到其他属性,程序运行后,Value的值正常,可是Value的set并没有被调到。...WPF对依赖属性进行了优化,在绑定等一些场合并不是调用属性的get,set方法,而是直接读取或设置依赖属性的EffectiveValue,也就是说,为了提高性能,绕开了你封装的方法,直接在DP内部去搞了

    63030

    最简单的代码,让 WPF 支持响应式布局

    最简单的代码,让 WPF 支持响应式布局 响应式布局在各种现代的 UI 框架中不是什么新鲜的概念,基本都是内置支持。...然而在古老的 WPF 框架中却并没有原生支持,后来虽然通过 Blend 自带的 Interactions 库实现了响应式布局,但生成的代码量太大了,而且需要引入额外的库。...如果只是希望临时局部地方使用响应式布局,那么其实可以直接使用 WPF 内置的绑定机制来完成响应式布局。本文介绍如何使用。 ---- 思路是在控件尺寸发生变更的时候更新控件的样式。...这里我们需要一个大于或等于,以及小于的转换器。...你也可以不绑定到窗口上,而绑定到控件本身上,使用 TemplatedParent 作为绑定的源即可。

    1.2K10
    领券