- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
IValueConverter
接口(interface)中的ConvertBack
方法有什么用。
什么时候调用?
或者 Convert
和 ConvertBack
方法的调用顺序是什么?
我在这里问这个问题是因为:我已经将 codebehind 的一个属性 绑定(bind)到 TEXTBOX 的 TEXT 属性,并且正在为该属性使用 convertor
.第一个 Convert
方法调用,当我在 TEXTBOX
中更改 TEXT
时,什么也没有发生......但是一旦我关闭表单 ConvertBack
方法调用。
最佳答案
IMO,ConvertBack
方法用于将数据的可视化表示形式转换为特定的数据类型。
例如:您使用转换器将 bool 值 true
转换为字符串 "TrueBoolean"
。此文本将显示在您的文本框中。当您更改 TextBox 的值时,ConvertBack
方法将在绑定(bind)再次触发时立即调用(默认为 OnFocusLost)。现在您的 ConvertBack
方法将尝试将新值转换为您想要的数据类型。因此,您必须实现将 "FalseBoolean"
转换为 false
的逻辑。
public class Converter : IValueConverter
{
object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool) value ? "TrueBoolean" : "FalseBoolean";
}
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
var s = (string) value;
if (s.Equals("TrueBoolean",StringComparison.CurrentCultureIgnoreCase))
return true;
if (s.Equals("FalseBoolean", StringComparison.CurrentCultureIgnoreCase))
return false;
throw new Exception(string.Format("Cannot convert, unknown value {0}", value));
}
}
如果我没记错的话,这种技术在 DataGrids 中被大量使用。
希望这有点清楚...
更新
关于你在评论中的问题:
要覆盖默认的 OnFocusLost
绑定(bind)行为,您必须像这样更改绑定(bind):
<TextBox Text="{Binding MyText, UpdateSourceTrigger=PropertyChanged}"/>
<!--syntax might differ, can't access VS at the moment.-->
关于c# - IValueConverter 接口(interface)中的 ConvertBack 方法有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6424074/
我知道当要显示数据时,会调用Convert()方法对数据进行转换,然后显示转换后的数据。 我想知道 ConvertBack() 方法何时被调用?它的目的是什么? 我有一个 DataGrid,它的 It
我在下面有一些代码,这是我正在尝试做的简化示例。我正在使用转换器尝试用我拥有的模型中的数据填充 DataGrid。 DataGrid 已正确填充,但网格中的任何更改都不会保留回对象。我已将模式指定为
只是想知道在实现没有有意义的 ConvertBack 实现(或仅用作 OneWay 的 IValueConverter 实现)时,人们认为最佳实践是什么? 如果它抛出(在那种情况下是什么异常),返回
有一个非常奇怪的问题让我很困惑。就像下面的代码一样,我创建了一个 [Button] 并将其 [Canvas.LeftProperty] 多重绑定(bind)到 [Entity.X] 和 [Entity
我编写了一个 MultiValueConverter,它检查给定列表是否包含给定值,如果包含则返回 true。我用它来绑定(bind)到自定义复选框列表。现在我想编写 ConvertBack 方法,以
抱歉我的英语不好。 在 XAML 上,我通过 Datagridtextcolumn 中的转换器绑定(bind)我自己的类“Parameter”的对象。 XAML C# public class Mi
ValueFormattingConverter.Convert 使用 XmlElement 调用。 ConvertBack 永远不会被调用。为什么?是否有义务将具有约束力的指令向下传递到链中? Te
我正在尝试绑定(bind)一个文本框,它可以验证由“,”或“;”分隔的电子邮件地址。目标是在页面上有一个复选框,一个文本框和一个按钮。如果选中该复选框,则用户必须输入有效的电子邮件地址,否则必须禁用该
IValueConverter接口(interface)中的ConvertBack方法有什么用。 什么时候调用? 或者 Convert 和 ConvertBack 方法的调用顺序是什么? 我在这里问这
我有以下多重绑定(bind): MyVisibilityDependencyProperty 是一个依赖属性。 MyBoolProperty 是一个
我正在使用 Josh Smith 在 http://msdn.microsoft.com/en-us/magazine/dd419663.aspx 的文章中描述的 MVVM 模式开发 WPF 应用程序
我有 ObservableCollection 的 View 模型绑定(bind)到 TextBox .用户必须能够输入带有一些分隔符(比如逗号或分号)的文本数据,并将更改反射(reflect)到 O
我有一个转换器,它接受 IEnumerable 并返回一个多行字符串。 Convertback 函数执行相反的操作,接收包含多行的字符串并返回一个列表。我在几个地方使用它并且效果很好。 我的问题是,我
我有一个多重绑定(bind)的问题: 为了计算 Canvas.Top 值,myConv
我有一个 GridView,其中一些列显示 Material 。 viewmodel 值都以 kg 为单位保存,对于某些 View 应将其转换并显示为升。这可以通过使用 IMultiValueConv
我正在将依赖属性绑定(bind)到 WPF 中的 textboxex。该属性是一个字符串,其中包含一些由“/”分隔的值(例如:“1/2/3/4”)。我需要将各个值绑定(bind)到单独的文本框,这对于
我是一名优秀的程序员,十分优秀!