Я пытаюсь использовать IFormatProvider для настройки некоторых привязок данных; однако класс IFormatProvider никогда не вызывается. Я установил точки останова в начале обеих функций в своем пользовательском классе форматирования, и ни одна из них не была затронута привязкой данных. Когда я использую свой пользовательский форматирующий класс с String.Format, он работает.
Я использую .Net 2.0 и winforms.
Вот как я делаю привязки данных:
label1.DataBindings.Add("Text", textBox1, "Text", true,
DataSourceUpdateMode.OnPropertyChanged,
"<NULL>","{0:H}",new MyFormat());
Вот как я использовал String.Format:
string test =(string.Format(_superFormat, "{0}", "this is my arg"));
А это мой пользовательский класс форматирования:
class MyFormat : IFormatProvider, ICustomFormatter
{
string ICustomFormatter.Format(string format, object arg, IFormatProvider formatProvider)
{
string result = ((string)arg).ToUpper();
return result ;
}
object IFormatProvider.GetFormat(Type formatType)
{
if (formatType == typeof(ICustomFormatter))
return this;
else
return null;
}
}