2015-12-03 3 views
0

При редактировании программ C# у меня есть вершина, которая включает пространства имен с ключевым словом using. Например, using System;.using statement in codebehind

У меня есть несколько классов, которые избыточно реализованы в моем приложении WPF. Я хотел бы создать единую контрольную точку для использования методов внутри всего приложения.

, например, когда я выполняю связывание данных для ComboBoxes У меня есть класс, который включает в себя это ...

public class ComboBoxItemSource : ViewModelBase 
{ 
    public ObservableCollection<Item> Source { get; set; } 
    public Item Selected { get; set; } 
} 

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

+0

У вас должен быть базовый класс корня для виртуальных машин. Если вы этого не сделали, сделайте один и разместите там все такие вещи. Поскольку он будет помещен в супер базовый класс, такой как Object class в C#, вы можете получить к нему доступ в любом месте. – AnjumSKhan

ответ

0

Я бы рекомендовал просто поместить класс в отдельный файл и добавить его в свой проект.

Или еще проще:

  • правой кнопкой мыши на проект в обозревателе решений -> «Добавить новый пункт» -> «Класс».
  • Копировать/Вставить свой класс в файл
  • Настройка имен
  • Добавить недостающие usings в файл (в частности, используя для «View Model Base»)

Класс, включая пространства имен в файле будет выглядеть примерно так:

namespace MyNamespace 
{ 
    public class ComboBoxItemSource : ViewModelBase 
    { 
     public ObservableCollection<Item> Source { get; set; } 
     public Item Selected { get; set; } 
    } 
} 
0

Вы могли бы сделать что-то вроде этого.

Создайте интерфейс IComboBox:

public interface IComboBox 
{ 
    ObservableCollection<Item> Source { get; set; } 
    Item Selected { get; set; } 
} 

, то вы можете создать класс, который наследует от вашего ViewModelBase и реализует свой IComboBox:

public class ComboBoxVM :ViewModelBase, IComboBox 
{ 
    public ObservableCollection<Item> Source 
    { 
     get 
     { 
      // do stuff 
      return _source; 
     } 
     set { _source = value; } 
    } 

    public Item Selected 
    { 
     get 
     { 
      // do stuff 
      return _selected; 
     } 
     set { _selected = value; } 
    } 
} 

затем в вашем ComboBoxItemSource, унаследован от ComboBoxVM:

public class ComboBoxItemSource : ComboBoxVM 
{ 

} 

Надеюсь, это поможет.