gpt4 book ai didi

c# - IValueConverter 接口(interface)中的 ConvertBack 方法有什么用?

转载 作者:IT王子 更新时间:2023-10-29 03:57:26 26 4
gpt4 key购买 nike

IValueConverter接口(interface)中的ConvertBack方法有什么用。

什么时候调用?

或者 ConvertConvertBack 方法的调用顺序是什么?

我在这里问这个问题是因为:我已经将 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com