VZVZ: Да, тот же IP. Порт указываете тот, на который делаете привязку, когда создаете TcpListener в коде. Про NAT лучше гугле почитать, в двух словах не объяснить.
Дмитрий Ковальский: Вы неправильно поняли, методы ComputeFactorialRecursive и ComputeFactorialIterative скомпилируются в момент обращения к ним, а не при заходе в метод Main, обращение (и компиляция) происходит на первой итерации цикла, поэтому первая итерация долгая
Да. Все верно. Вы молодец!
Только в Вашем боевом проекте SelectedObject может быть не только Product, как правило для этого выделяют какой нибудь базовый класс, аля EditableEntity и в коллекциях в качестве параметра T используют его.
PS: еще у Вас Dispose рекурсивно сам себя вызывает.
TheShock: За это такой подход дает типобезопасность.
Event специально придумали, чтобы не парить себе мозг IObserver и IObservable,передачей кучи аргументов в update и написанием всяких EventManagerов. По сути Вы изобраете очередной велосипед. Также неверно мнение, что event - только простенькие применение. Event может использоваться где угодно, зависит от фантазии.
Да и событий у Вас наверняка не столько, сколько имеет класс кнопки например (https://msdn.microsoft.com/ru-ru/library/system.wi...(v=vs.110).aspx)
Борис Животное: нигде, это глючное говно, у моих коллег он вообще выключен в настройках VS. Я бы тоже выключил, но тогда исчезает генерация номеров строк (VS2012).
Разметку пишем в основом в Kaxaml.
Борис Животное: Честно говоря, смотрел бегло. После вновь увиденных локаторов даже погружаться не стал. Вы мне в предудыщем своем вопросе писали, что пишете разметку для всего главного окна.
Про тормоза заказчика - Вы неправильно поняли, это моя издевка над пиханием IoC всюду, мол, даже XAML Designer захлебывается.
Вообще, у меня периодически падает XAML Designer, лечится переоткрытием окна дизайнера (на машине 8 Гб ОЗУ).
Вы хотите сверстать сразу все главное окно в редакторе?
Не дожидаясь ответа, скажу, что для сложных проектов с использованием XAML Designer не сделать (а у Вас ведь он сложный, правда? Иначе Вы бы не стали использовать IoC контейнер ;) )
Как правило в дизайнере отрисовывается только часть, панелька какая, контрольчик, и потом ручками все это собирается в единую картину.
Сергей Виноградов: Ссылка на вьюху не нужна, последний приведенный код использует слой ViewModel, а не View. IDs - должна быть ObservableCollection - это слой ViewModel, внутрь модели уходить не требуется, просто надо вставить это в тот участок, который работает с IDs, IDs по возможности должен быть изолирован от модели. MVVM все-таки.
Сергей Виноградов: ну дык при изменении элемента вызови ты
var view = CollectionViewSource.GetDefaultView(Ids);
view.Refresh();
и все снова отсортируется.
Вопрос не в том, что оно не работает, вопросов в том, что у ВАС не получилось заставить его работать.
Сергей Виноградов: Вы, видимо с WPF недавно начали знакомиться, вообще, примите совет: сначала проверьте предлагаемое решение, а потом, если оно окажется вдруг неправильным - опровергайте его.
Дак вот, повторяю: ТАКОГО РОДА СОРТИРОВКА РАБОТАЕТ ВСЕГДА ПРИ ДОБАВЛЕНИИ В КОЛЛЕКЦИЮ, один там элемент или тысяча, вставка нового элемента произведется не в конец, а в то место, где элементу полагается быть с учетом сортировки.
Поясню на примере, во VIEW MODEL есть список, G-A-B-Z-D-H, во VIEW он по умолчанию будет отображен в том же порядке, как только мы добавляем правило сортировки:
ViewModel: G-A-B-Z-D-H
View: A-B-D-G-H-Z
Добавляем R:
ViewModel: G-A-B-Z-D-H-R
View: A-B-D-G-H-R-Z