Кроме того, что контролировать, которому уже ответили, необходимо удостовериться - безотносительно системы, которую Вы используете - что Вы получаете только один уведомление об ошибке, которая происходит многократно по каждому запросу. Или Ваш ящик входящих сообщений исчерпает память :) Плюс, это - простое раздражение...
Делят резервные сдвиги между поддержкой/командой разработчиков, таким образом, один человек не должен быть по требованию каждый вечер. Это сотрет людей. Контроль хорошая вещь , но все должны получить шанс иметь жизнь время от времени. Ваш сотовый телефон, шумящий в 2:00 в течение нескольких ночей, будет становиться очень старым довольно скоро, доверять мне. И не каждый разработчик привык к поддержке 24/7, таким образом, необходимо найти баланс между использованием контроля и злоупотреблением контролем.
В основном, имейте отличные уровни эскалации, и если небо не падает, определите" спокойствие теперь " окно ночью, куда меньшие уровни эскалации не выходят.
Я попробовал это сегодня вечером:
public class State
{
public string Code { get; set; }
public string Name { get; set; }
}
public class MyWindowViewModel
{
ObservableCollection<State> _states = new ObservableCollection<State>
{
new State { Code = "FL", Name = "Florida" },
new State { Code = "CA", Name = "California" },
};
public ObservableCollection<State> States
{
get
{
return _states;
}
}
}
<Window x:Class="WpfApplication1.MyWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:app="clr-namespace:WpfApplication1"
Title="Window1"
Height="300"
Width="300">
<Window.Resources>
<app:ServiceLocator x:Key="Locator" />
</Window.Resources>
<StackPanel>
<ComboBox x:Name="TestCombo" SelectedIndex="0" DisplayMemberPath="Name" SelectedValuePath="Code">
<ComboBox.ItemsSource>
<CompositeCollection>
<app:State Code="" Name="Select a state..." />
<app:State Code="TX" Name="Texas" />
<CollectionContainer Collection="{Binding Source={StaticResource Locator}, Path=MyWindowViewModel.States}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
</StackPanel>
</Window>
Ключевым моментом здесь является создание экземпляра вашего локатора сервисов в качестве статического ресурса, а затем его использование для перехода к вашей модели просмотра. Локатор сервисов может подключаться к экземплярам ViewModel с помощью Unity или любого другого DI, который вы хотите.
Edit:
На самом деле в моем приложении silverlight я создаю локатор сервисов как статический ресурс в App.xaml, а затем привязываю свои другой UserControls / Windows / Pages DataContext в свойство ViewModel локатора службы. Он должен работать таким же образом для полей со списком, даже если локатор службы создается в ресурсах App.xaml. Я бы хотел, чтобы у меня была серебряная версия CompositeCollection, которую я мог бы использовать. Это отлично подойдет для приложения, над которым я работаю. : (