У меня есть приложение 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>
Но я не знаю, как предотвратить изменение в выпадающем списке.Что бы я хотел сделать, это отобразить окно сообщения при возникновении этой ошибки и установить старое значение обратно, пока оно не сможет быть проверено, но я не могу найти способ получить это сообщение или заменить значение.
Заранее спасибо за помощь!