Почему CompositeCollection не Замораживаем?

Кроме того, что контролировать, которому уже ответили, необходимо удостовериться - безотносительно системы, которую Вы используете - что Вы получаете только один уведомление об ошибке, которая происходит многократно по каждому запросу. Или Ваш ящик входящих сообщений исчерпает память :) Плюс, это - простое раздражение...

Делят резервные сдвиги между поддержкой/командой разработчиков, таким образом, один человек не должен быть по требованию каждый вечер. Это сотрет людей. Контроль хорошая вещь , но все должны получить шанс иметь жизнь время от времени. Ваш сотовый телефон, шумящий в 2:00 в течение нескольких ночей, будет становиться очень старым довольно скоро, доверять мне. И не каждый разработчик привык к поддержке 24/7, таким образом, необходимо найти баланс между использованием контроля и злоупотреблением контролем.

В основном, имейте отличные уровни эскалации, и если небо не падает, определите" спокойствие теперь " окно ночью, куда меньшие уровни эскалации не выходят.

22
задан Anderson Imes 29 July 2009 в 04:05
поделиться

1 ответ

Я попробовал это сегодня вечером:

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, которую я мог бы использовать. Это отлично подойдет для приложения, над которым я работаю. : (

10
ответ дан 29 November 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: