Звучит так, как будто ваше правило о том, что поле не заполнено, является правилом пользовательского интерфейса, а не правилом данных (поэтому значение данных действительно равно -1, оно просто должно отображаться как пустое).
Если это так, давайте переместим пустую логику в пользовательский интерфейс. Итак, ваше свойство объекта данных возвращает целое число (и оно возвращает действительное значение целого), и затем вы можете изменить его на своем дисплее.
Один из способов сделать это будет с форматированием - вы можете указать Formatter с привязкой данных или перехватить событие Format на привязке данных.
Конечно, вам все еще нужно решить, что делать, когда пользователь вводит пустое значение в текстовое поле ...
Вот очень простой пример использования события Format в привязке данных:
var binding = this.textBox1.DataBindings.Add("Text", MyObject, "AValue", true);
binding.Format += (s, args) =>
{
int i = (int)args.Value;
if (i <= 0)
args.Value = "";
};