当前位置: 首页 > 编程语言 > C#

获取ConvertBack()方法中的Source值,以便在WPF绑定中实现IValueConverter分享

时间:2023-04-10 21:45:05 C#

C#学习教程:WPF绑定中ConvertBack()方法中获取Source值实现IValueConverter.属性是一个字符串,一些值用'/'分隔(例如:“1/2/3/4”)。我需要将单个值绑定到单独的文本框,这适用于Convert()方法的以下实现:publicobjectConvert(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){if(!string.IsNullOrEmpty(valueasstring)){String[]data=(valueasstring).Split('/');返回数据[Int16.Parse(参数为字符串)];}返回String.Empty;使用ConverterParameter指定所需值的位置。但是,问题出在ConvertBack()方法上。我不知道,如何获取源值,以便我可以仅添加或更改字符串中的一个值(在指定位置)。感谢您的帮助。在大多数情况下,您可以安全地让ConvertBack抛出NotImplementedException。事实上,您还没有获得足够的信息来重构其源代码的来源!如果你真的需要反向转换(例如,如果你使用双向绑定),我会在视图模型(DataContext使用的类)中将属性拆分为3个字符串并分别绑定它们。更新您可能已经在Vlad的帮助下解决了您的问题,我只是想我应该添加另一种方法来实际获取转换器中的源值。首先,你可以让你的转换器从DependencyObject派生,这样你就可以向它添加一个依赖属性,我们将绑定它,typeof(MyConverter));公共字符串SourceValue{get{return(string)GetValue(SourceValueProperty);}set{SetValue(SourceValueProperty,value);}}publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture){//...}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,CultureInfoculture){objecttargetValue=value;对象sourceValue=SourceValue;//...}}不幸的是,转换器ThereisnoDataContext所以Binding不会开箱即用,但你可以使用JoshSmith的优秀DataContextSpy:ArtificialinheritancecontextupdateinWPFoverDr.WPF有一个优雅的解决方案对此,请参阅以下主题中的ConvertBack()一种访问绑定源的方法?编辑使用Dr.WPF的解决方案,您可以使用此(可能有点冗长)示例代码将字符串索引和源TextBox提供给转换器1,然后您可以在ConvertBack方法中访问索引和TextBox公共对象ConvertBack(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){object[]parameters=parameterasobject[];短索引=(短)参数[0];objectsource=(parameters[1]asTextBox).DataContext;//...}使用IMultiValueConverter和MultiBinding会更好吗?publicinterfaceIMultiValueConverter{objectConvert(object[]values,TypetargetType,objectparameter,CultureInfoculture);object[]ConvertBack(objectvalue,Type[]targetTypes,objectparameter,CultureInfo文化);在这种情况下,如果你真的想要编辑组件,你可以用一个更复杂的对象来表示你的编号,它允许你通过索引器访问它的4个组件,这样它只是一个简单的对象来绑定和访问这4个部分,可以拼凑出一个完整的数字:我刚刚构建了一个快速示例。请检查您是否正在寻找相同的东西。这对我有用。但是,我无法理解ConvertBack方法的确切问题。你能详细说明一下吗?以上就是C#学习教程:在ConvertBack()方法中获取Source值,实现WPF绑定中IValueConverter共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: