Проверка в WPF DataGrid не работает - PullRequest
1 голос
/ 22 июля 2011

Я пытаюсь получить свойства 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}"

Есть идеи?

1 Ответ

1 голос
/ 22 июля 2011

Ваша ViewModel должна реализовывать IDataErrorInfo, и вы используете этот интерфейс для определения ваших правил проверки

Верхняя ссылка Google вернула этот сайт , который показывает простой пример того, как это реализовано.

...