Архив за месяц: Декабрь 2015

Показ дочерних View в рамках патерна MVVM (часть 2)

Пару лет назад уже была статья "Показ дочерних View в рамках патерна MVVM", т.к. сейчас это делаем по другому, да и вопрос тут возник на тостере... Еще раз, в рамках паттерна предполагается что ViewModel (бизнес-логика) работает только с классами ViewModel и Model, а нам необходимо показать окно, т.е. кроме создания ViewModel для него, нужно создать еще и View. Как это сделать? Четвертый вариант под катом.

Пример будет максимально упрощен, но основные идеи постараюсь показать.
1. Создаем пустой WPF проект. В него добавляем класс окно вот с такой разметкой:

<Window x:Class="ChildWindowsDemo.ChildWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ChildWindowsDemo"
        mc:Ignorable="d"
        Title="{Binding Title}"SizeToContent="WidthAndHeight">
    <Grid>
        <ContentPresenter Content="{Binding }" />
    </Grid>
</Window>

В коде у него ничего не добавляем. Именно в этом окне будут показываться все дочерние ViewModel. Его состояние можно привязать к модели, например, здесь показано как привязать заголовок, но точно так же можно Visability или другие свойства (для свойств типа Visability можно через конвертор, а в можели хранить bool).
2. Добавляем класс базового ViewModel:

public class ViewModelBase : DependencyObject
{
    ///
    ///Окно в котором показывается текущий ViewModel
    ///
    private ChildWindow _wnd = null;

    ///
    /// Заголовок окна
    ///
    public string Title
    {
        get { return (string)GetValue(TitleProperty); }
        set { SetValue(TitleProperty, value); }
    }

    // Using a DependencyProperty as the backing store for Title.  This enables animation, styling, binding, etc...
    public static readonly DependencyPropertyTitleProperty =
        DependencyProperty.Register("Title", typeof(string), typeof(ViewModelBase), new PropertyMetadata(""));       

    ///
    /// Методы вызываемый окном при закрытии
    ///
    protected virtual void Closed()
    {

    }

    ///
    /// Методы вызываемый для закрытия окна связанного с ViewModel
    ///
    public bool Close()
    {
        var result = false;
        if (_wnd != null)
        {
            _wnd.Close();
            _wnd = null;
            result = true;               
        }
        return result;
    }

    ///
    /// Метод показа ViewModel в окне
    ///
    /// viewModel">
    protected void Show(ViewModelBase viewModel)
    {
        viewModel._wnd = new ChildWindow();
        viewModel._wnd.DataContext = viewModel;
        viewModel._wnd.Closed += (sender, e) => Closed();
        viewModel._wnd.Show();
    }
}
Потомки этого класса могут передавать произвольного потомка этого класса в метод Show, чтобы показать его в отдельном окне.
3. Создаем View для демо, т.к. у нас всегда показывается в окне из пункта 1, то View делаем на основе UserControl:

<UserControl x:Class="ChildWindowsDemo.View.DemoView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:local="clr-namespace:ChildWindowsDemo.View"
             mc:Ignorable="d"
             d:DesignHeight="300" d:DesignWidth="300">
    <StackPanelWidth="200">
        <DatePicker SelectedDate="{Binding Date}" />
        <Button Command="{BindingCloseCommand}">Закрыть</Button>
    </StackPanel>
</UserControl>
Наш дочерний ViewModel позволяет вводить дату и содержит кнопку для закрытия окна.
4. Демонстрационный ViewModel, потомок нашего ViewModelBase:

class DemoViewModel : ViewModelBase
{
    public DateTime Date
    {
        get { return (DateTime)GetValue(DateProperty); }
        set { SetValue(DateProperty, value); }
    }

    // Using a DependencyProperty as the backing store for Date.  This enables animation, styling, binding, etc...
    public static readonly DependencyPropertyDateProperty =
        DependencyProperty.Register("Date", typeof(DateTime), typeof(DemoViewModel), new PropertyMetadata(null));

    public ICommandCloseCommand
    {
        get { return (ICommand)GetValue(CloseCommandProperty); }
        set { SetValue(CloseCommandProperty, value); }
    }

    // Using a DependencyProperty as the backing store for CloseCommand.  This enables animation, styling, binding, etc...
    public static readonly DependencyPropertyCloseCommandProperty =
        DependencyProperty.Register("CloseCommand", typeof(ICommand), typeof(DemoViewModel), new PropertyMetadata(null));

    public DemoViewModel()
    {
        CloseCommand = new SimpleCommand(() => Close());
    }
}

5. Главный ViewModel тоже является потомком BaseViewModel, в нем реализуем показ дочернего окна вызовом метода Show:

class MainViewModel : ViewModelBase
{
    public ICommandCreateChildCommand { get; set; }

    public MainViewModel()
    {
        CreateChildCommand = new SimpleCommand(CreateChild);
    }

    private void CreateChild()
    {
        var child = new DemoViewModel()
        {
            Title = "Дочернее окно",
            Date = DateTime.Now
        };
        Show(child);
    }
}

6. Ну и магия, в ресурсах приложения создаем связку между View и ViewModel:
<Application.Resources>
    <DataTemplateDataType="{x:Type viewmodel:DemoViewModel}">
        <view:DemoViewHorizontalAlignment="Stretch" />
    </DataTemplate>
</Application.Resources>

Все, можно запускать наше приложение. Клики по кнопке на главной форме показывают дочерние окна, ну а клик на кнопке в дочернем окне закрывает дочернее окно:
Полный код примера можно скачать здесь.

Fast Comment 1.0


Скрипт коментарів, дозволить вам створювати опитування у вигляді коментарів
особливості:
— Використовуються прості шаблони, дозволять вам швидко повністю сменть дизайн
— Зручний адмінцентр
— Наявність захист від спам ботів
— Ведення архіву
— Можливість додавати опитування
— Можливість змінювати опитування
— Можливість видаляти опитування
— Можливість включати і вимикати опитування
— Можливість редагувати коментарии
— Можливість відповідати на коментарии
— Можливість видаляти коментарии
— НЕ ВИКОРИСТОВУЄ БД (всі дані зберігаються в текстових файлах)

Новости сайта:аренда квартир Киев


Завантажити Розмір: 26,16 Kb Файл: 1086.rar

Сборный груз позволит вам получить небольшую партию товара

Наша компания с удовольствием доставит ваш товар из любого уголка. В частности, нами предлагается доставка сборных грузов из Германии. Хотим сразу акцентировать внимание на том, что предполагается сложный вариант доставки. Почему? Объяснение – специфика сборных грузов. А точнее, это мелкие товары. То есть это вариант объединиться разным заказчикам с целью получения своего товара.

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

Как же происходит доставка сборного груза из Франции, из Германии? Сначала клиенту нужно обратиться к нашему личному клиент-менеджеру. После этого оставляется заявка. Наш специалист получает всю интересующую его информацию и переносит ее в систему. Следующий шаг состоит в выборе самого оптимального варианта транспортировки. Так, товар может быть забран со склада консолидации. При этом он находится в стране-отправителя. Есть и вариант доставки на центральные склады консолидации. Когда уже грузы окажутся на центральных складах, товары перегружаются на автомобили. Потом происходит доставка сборного груза из Франции на таможенные посты.

И если товар находится в Германии, то наши специалисты обратятся к менеджеру компании-отправителя. Цель: очень быстро разрешить все вопросы. Ведь нужно четко понимать, какие сроки отправки и когда нужно получить груз. Только после этого можно оформлять все необходимые документы. Отметим, они предусматриваются

таможенным законодательством.

После прибытия заказа на склад, клиенты получат в электронном виде копии сопроводительных документов. А так как используется специальная система автоматических уведомлений, можно всегда узнать, что происходит с грузом. Когда же клиент захочет, специалисты предоставят ему подробный счет со всеми расходами. Отметим, они будут не только до пересечения границы.

Мнение о книге "Антихрупкость"


Наука хороша на своем месте. Но беда для практика, если он примет ее за чистую монету и начнет в своей невероятно сложной практике применять ее отдельные проекции и думать, что его объект, тот, с которым он, практик, имеет дело, таков, каким его нарисовал теоретик.
 -- Г. Щедровский
Я не случайно начал мнение о книги Никоссима Талеба с цитаты другого ученого и писателя. Собственно, все что рассказывается в "Антихрупкости" на большом количестве страниц можно свести к этой цитате. Прочтение "Черного лебедя" перевернуло взгляд на многие вопросы, в нем, что ни глава, то новая особенность окружающего мира, нашего восприятия этого мира или еще что-то интересное. В "Антихрупкости" всего этого нет. Есть достаточно очевидные вещи (кстати, может и после прочтения лебедя некоторые из этих вещей стали очевидными). Вся книга про то, что это прорыв, что вот Талеб - молодец все это описывает и применяет, вот куча примеров из прошлого как древние и не очень мыслители думали так же как Талеб (в лебеде как раз писалось что под каждую теорию можно найти высказывания мудрецов прошлого как подтверждающих, так и опровергающих ее, здесь же как-будто другой человек пишет и постоянно кого-то цитирует). Странное ощущение от книги.
Читать ли книгу? Отвечу не цитатой из Антихрупкости: "При выборе книг я руководствуюсь тем же эффектом Линди: книги, которые переиздаются десять лет, мы будем читать еще столько же; книги, пережившие два тысячелетия, явно будут с нами еще долго, и так далее". Давайте подождем 10 лет и посмотрим, если Антихрупкость будут переиздавать и читать, то прочитайте... Ну а так, лучше "Черного лебедя".

Обработчик "PageHandlerFactory-Integrated" содержит поврежденный модуль "ManagedPipelineHandler"

Поставил IIS, выгрузил в него проект, при заходе через браузер на страницу проекта получил сообщение вынесенное в заголовок. Решается это запуском переустановки ASP. Net, вот так:
%windir%Microsoft.NETFramework64v4.0.30319>aspnet_regiis.exe -i

SliperShop 0.1 alpha

 

SliperShop 0.1 alpha — це скрипт інтернет — магазину написаний на PHP
використовує текстові файли для зберігання інформації, простий в установці,
налаштуванні і використанні. Інтуїтивний, дружній інтерфейс
користувача частині магазину.

Основні функції скрипта:
* Необмежена кількість рівнів категорій товарів.
* Можливість створення перекресні рівнів.
* Можливість додавання повного опису до товару.
* Можливість додавання зображення до товару.
* Вся база зберігається в звичайних текстових файлах.
* Зображення та опис до розділів.
* Висновок по кілька товарів на станицю.
* Вибір кількості стовпців товару при виведенні.
* Необмежена число полів при оформленні замовлення.

Скрипт не має дизайну, тому межет бути легко інтегрований в готовий проект.

Смотрите также:Раскрутка сайта

Завантажити Розмір: 352,19 Kb Файл: 750.zip

Форма зворотнього зв’язку PHP Mailer Final з капчі

 

Про скрипті

Простий і надійний скрипт форми зворотного зв’язку для сайту. Для захисту від спамерів в скрипті встановлена ​​капча.

Скрипт виводить форму і, при заповненні необхідних полів, відправляє на Ваш e-mail повідомлення. У скрипт вбудовано захист від роботів: перед відправкою листа треба ввести капчу.

Вкрай проста установка і налаштування

— Розпакуйте вміст архіву на Ваш сайт.
— Відкрийте текстовим редактором файл form / config.php.
— Привласніть змінної $ mailto = «»; свій e-mail.

Смотрите также:цифротех отзывы о сайте

Скрипт готовий до роботи.
Протестуйте його роботу, перейшовши за посиланням http: //ваш_сайт.ру/form/form.php

Приклад для тестів

Завантажити Розмір: 162,32 Kb Файл: form.zip

Клиентские симуляторы

У нас вы столкнетесь только с самым качественным и топовым контентом! Лучшие симуляторы, в которые любят играть много людей во всем мире, мы собрали на нашем сайте и у вас появилась отличная возможность выбрать себе любимую игрушку и отвлечься от повседневных забот, погрузившись в виртуальный мир!

Игры симуляторы онлайн – очень популярный и востребованный жанр игр среди пользователей интернет. У этих игр очень много поклонников в разных уголках планеты.  Онлайн симуляторы — представляют собой виртуальные имитаторы, имитирующие управление различными процессами в игре и максимально приближены к реальным жизненным ситуациям: экономический, спортивный или другой, управление транспортным средством или техническим аппаратом и т.п.

Игры симуляторы онлайн, создают иллюзию действительности, отображая настоящие действия в виртуальной клиентской игре.

Также симуляторы являются отличным психологическим тренингом, так как человек может проигрывать различные жизненные ситуации в игре или наделять персонажа качествами, присущими ему самому. Это касается в большей мере симуляторов жизни. Человек строит себе мир, в котором ему комфортно и благодаря проигрыванию ситуаций в игре, в дальнейшем быстрее находит решения в обычной жизни.

Симуляторы бывают нескольких категорий:

спортивные – вы настоящий игрок какого-либо вида спорта и участвуете в соревнованиях или просто нарабатываете опыт;

экономические – вы создаете своею финансовую империю;

космические, авиасимуляторы, автосимуляторы, танковые – вы почувствуете себя настоящим водителем или пилотом;

правил дорожного движения – вы сможете выучить ПДД или обновить в памяти то, что уже знаете, а также социальные, танцевальные и еще много других тем.

Основное преимущество клиентских онлайн игр – это просто великолепное качество! Играя в эти игрушки, вы оцените по достоинству графику, заслуживающую самой высокой оценки, спецэффекты, звуковые эффекты и другие преимущества этого жанра. Для того чтобы играть в эти игры нужно будет скачать специальную программу – клиент. В дальнейшем вы уже регистрируетесь и начинаете играть. Время потраченное на скачивание, окупится удовольствием, которое вы получите от отличной игры!

Данный раздел посвящен новым и популярным и самым востребованным клиентским онлайн симуляторам. Перейдя на страницу с игрой, у вас появится возможность посмотреть её описание, картинки, скриншоты и другое, что облегчит ваш выбор. Спасибо вам, что отдали предпочтение нашему сайту. Желаем приятного времяпровождения!

Об изменениях в новой книге Стровструпа "Практика программирования"

Из типографии вышел перевод очередной версии книги "Программирование. Принципы и практика использования C++", написанной Беарне Стровструпом - создателем языка C++. Поскольку на сайте автора я не нашёл информации об изменениях в новой книге, то сравнил оригинальные содержания предыдущего и нового издания этой книги.

Далее приведён перечень изменений в содержании новой книги.

+ 4.6.1        Traversing a vector
+ 8.5.9        constexpr functions
+ 9.5.1        "Plain" enumerations
+ 15.3.3    Lambda expressions
+ 16.3.3    A lambda expressions as a callback
+ 18.2        Initialization
+ 18.3.4    Moving
+ 19.3.3    Concepts
- 19.5.4    auto_ptr
+ 19.5.4    unique_ptr
+ 19.5.5    Return by moving
+ 20.5.1    Container traversal
+ 20.5.2    auto
+ 21.4.3    Lambda expressions
+ 21.9        Container algorithms
+ 23.6.1    Raw string literals
- 26.3.5    Testing classes
- B.6.3        pair
+ B.6.3        pair and tuple
+ B.6.4     initializer_list
+ B.6.5        Resource management pointers
+ B.9.6        Random numbers
+ B.10        Time

Manlix SW Vote v0.1

 

Непоганий скрипт для голосування.
можливості:
Створення необмеженого числа голосувань.
Веб інтерфейс для адміна.
При зверненні до головного файлу голосувань, виводиться їх повний список.
Можливо переглядати результати кожного голосування окремо, через головний файл.
При неправильному поводженні до головного скрипту голосувань, виводяться відповідні помилки.

Смотрите также восстановление данных с ноутбука

Завантажити