Я пытаюсь получить свойства ViewModel, проверенные в DataGrid, но у меня возникла проблема.
Мой код XAML выглядит следующим образом:
<DataGrid x:Name="Items">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Quantity}" Header="Quantity" />
</DataGrid.Columns>
</DataGrid>
ViewModel-объекты в коллекции Items (на основе класса Caliburn.Micro Screen) имеют свойство, которое выглядит следующим образом:
public int Quantity
{
get { return Section.Quantity; }
set { Section.Quantity = value; }
}
Это прекрасно работает!Если я введу «abc» в ячейку, где должно быть количество, красная линия будет нарисована вокруг текстового поля, чтобы указать на ошибку.
Однако я хочу иметь возможность немного манипулировать значением количества, поэтому явместо этого я хотел бы использовать этот код:
public string Quantity
{
get { return string.Format("{0} pcs.", Section.Quantity); }
set
{
var quantityAsText = value.Replace("pcs.", string.Empty).Trim();
int quantity;
if (int.TryParse(quantityAsText, out quantity))
{
Section.Quantity = quantity;
NotifyOfPropertyChange(() => Quantity);
}
else
{
throw new FormatException("Quantity must be a number!");
}
}
}
Однако это не работает.FormatException никогда не перехватывается, и мое приложение падает ...
Я пытался изменить привязку к этому без какого-либо положительного результата:
Binding="{Binding Quantity, Mode=TwoWay, ValidatesOnExceptions=True}"
Есть идеи?