Проверка с использованием [Свойство] Изменение методов EF4 - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть приложение WPF с уровнем данных, созданным EF4.На одном из экранов я отображаю контейнер (право на имя: мастер), который содержит несколько элементов (имя объекта: проект).

Мастер имеет статус, который может быть открыт или закрыт (устанавливается пользователем)), но не может быть закрыт, если все его проекты не закрыты.

Я использовал частичный класс в entity framewok, чтобы сделать это:

public partial class Master
{
    partial void OnStatusIdChanging(int value)
    {
        if (value == 2)  // Changing status to closed.
        {
            // Must check if all projects are closed.
            if (this.Projects.Any(e => e.StatusId == 1))
            {
                throw new InvalidOperationException("All the underlying projects must be closed to set the master'status to closed.");
            }
        }
    }
}

Это связано так вxaml:

<ComboBox Grid.Column="1" Margin="2" ItemsSource="{Binding MasterStatusTypes}" SelectedValuePath="Id" SelectedValue="{Binding CurrentMaster.StatusId, Mode=TwoWay}">
<ComboBox.ItemTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding Name}"/>
    </DataTemplate>
</ComboBox.ItemTemplate>

Но я не знаю, как предотвратить изменение в выпадающем списке.Что бы я хотел сделать, это отобразить окно сообщения при возникновении этой ошибки и установить старое значение обратно, пока оно не сможет быть проверено, но я не могу найти способ получить это сообщение или заменить значение.

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 23 февраля 2012

Я бы настоятельно рекомендовал использовать интерфейс IDataErrorInfo для любой проверки, поскольку WPF создан для его использования.Затем вы можете настроить привязки следующим образом, чтобы использовать встроенную проверку:

<ComboBox SelectedValue="{Binding CurrentMaster.StatusId, ValidatesOnDataErrors=True}" ... />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...