Denis Gladkikh
Russian   |  English

Выбранный тег: .NET

Страница  1  2  3  4  5  6  

WPF 4.0. Что нового? Часть 1.

Приходит время знакомиться с новым, приближающимся WPF 4.0. Интересно посмотреть, что нам нужно сделать, чтобы перестроить текущие приложения под WPF 4.0, и какие новые функции можно пристроить к нашим WPF 3.5 программам. Вот и я решил пробежаться по всем новым функциям, чтобы быть в курсе. По мере знакомства с WPF 4.0 я понял, что в реальности ничего сверхсложного и не появилось, все какие-то доработки и доделки, в разном роде имеющие разные значимости в наших приложениях.



Windows 7 & DWN: знаете ли вы, что не все окна должны подчиняться Flip3D и Aero Peek

Вы, наверняка, знаете, что в Vista и Windows 7 существует функция Flip3D, а в Windows 7 еще и Aero Peek.

Aero Peek Flip3D

Но вы, наверняка, не знаете, что можно заставить ваше окно (приложение) не подчиняться правилам для всех окон в данных возможностях Windows. Для этого следует изучить Desktop Window Manager API.




Работа с окнами как в Windows 7 при помощи hotkeys: Win + [Up|Down|Left|Right]

В Windows 7 появилась очень удобная возможность - позиционирование окна при помощи горячих клавиш:

  • Win + Up - максимизация окна;
  • Win + Left - прикрепить окно к левому краю рабочего стола;
  • Win + Right - прикрепить к правому краю;
  • Win + Down - вернуть окно в нормальное состояние или свернуть.

Функциональность данная очень удобная, но, к сожалению еще не у всех есть возможность использовать данную версию Windows, либо может не на всех компьютерах. Такое же положение было у меня весной, когда была только Beta и Release Candidate версии Windows 7. Потому я решил выделить несколько вечеров и написать небольшое приложение добавляющее данную возможность в более ранние версии Windows. Данной программой я уже делился со всеми и на данный момент уже ей не пользуюсь, но все же хочу ею поделиться с сообществом еще раз (ведь тема Windows 7 сейчас еще более актуальна, а программу видели очень мало народу), так как раньше этого не делал из-за того что и не было такой возможности. Кроме того, что программа добавляет функционал по позиционированию окон, так же есть пару дополнительных возможностей - перемещение активного окна при помощи горячих клавиш, а так же перемещение окна между мониторами при помощи горячих клавиш. Горячие клавиши можно настроить.

Историю данного проекта можно просмотреть на моем блоге в LiveJournal:

Программа написана на .NET на языке C#, потому, конечно же, ОЗУ используется больше чем необходимо (бывает и около 16Mb). Данное приложение можно использовать для изучения работы с окнами в Windows и регистрации горячих клавиш в Windows.

Исходные код изначально был размещен на Google Code, а потом и на CodePlex (просто ради интереса, как выглядит и работает CodePlex), там же вы можете найти собранные версии. Для работы программы необходим Microsoft Framework 3.5 SP1 (Для него он был собран).

Progg it



Интегрируемся с Twitter

Давайте сначала обозначим, что такое Twitter.

Twitter – это бесплатный интернет-сервис, представляющий собой систему микроблогов, позволяющий пользователям отправлять короткие текстовые заметки (до 140 символов), используя веб-интерфейс, SMS, службы мгновенных сообщений или сторонние программы-клиенты (http://ru.wikipedia.org).

Второй вопрос, а зачем он нужен вообще? Просто общаться с друзьями? Это как вариант, но все таки существуют более удобные сервисы для обмена сообщениями. Скорее всего для публикацией и слежением за новостями (как личные, так и публичные).

Итак, если у вас есть некий интернет магазин, или сайт компании, на котором вы публикуете новости, то можно создать и twitter аккаунт, для того, чтобы дублировать туда информацию о выходе новых публикаций на сайте (как новости, так и поступление новой продукции), или вы можете прикрутить к своему блогу возможность публиковать в твиттере информацию о поступлении новых топиков (есть готовые сервисы, как http://twittsync.com/, работает на Microsoft Azure). Так же можно использовать твиттер “не по назначению” – вы можете создать некий пустой аккаунт, который будет публиковать, к примеру, состояние вашего компьютера, через Direct Message на ваш аккаунт или просто к себе на главную – один из примеров: ваш провайдер требует деньги за белый IP адрес, в противном случае он назначает вам адрес динамически, и каждые 24 часа вас отрубает (это для тех, кто использует роутеры) и вы хотите в любое время (например, с работы) узнавать какой у вас IP адрес для того чтобы зайти на свой домашний компьютер удаленно.

Следующий вопрос, сложно ли это сделать?

Легко! Можно пойти немного по более сложному пути и изучать TwitterAPI самому, тогда вам ни от чего не нужно будет зависеть, для начала тогда нужно воспользоваться статьей – Michael C. Kennedy – Building a Twitter Application in .NET, путь попроще – использовать готовое решение LINQ to Twitter (я им и воспользуюсь).



Динамическая компиляция кода в C#

Использовать компилятор из кода C# достаточно просто. А вот зачем – это другой вопрос :).

Hello World

Напишем первый простой пример. Создаем консольное приложение и напишем следующий код:

using System; 
using System.CodeDom.Compiler; 
using System.Collections.Generic; 
using Microsoft.CSharp; 
 
namespace ConsoleCompiler 
{ 
    internal class Program 
    { 
        private static void Main(string[] args) 
        { 
            // Source code для компиляции 
            string source = 
            @" 
namespace Foo 
{ 
    public class Bar 
    { 
        static void Main(string[] args) 
        { 
            Bar.SayHello(); 
        } 
 
        public static void SayHello() 
        { 
            System.Console.WriteLine(""Hello World""); 
        } 
    } 
} 
            "; 
 
            // Настройки компиляции 
            Dictionary<string, string> providerOptions = new Dictionary<string, string> 
                { 
                    {"CompilerVersion", "v3.5"} 
                }; 
            CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions); 
 
            CompilerParameters compilerParams = new CompilerParameters 
                {OutputAssembly = "D:\\Foo.EXE", GenerateExecutable = true}; 
 
            // Компиляция 
            CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source); 
 
            // Выводим информацию об ошибках 
            Console.WriteLine("Number of Errors: {0}", results.Errors.Count); 
            foreach (CompilerError err in results.Errors) 
            { 
                Console.WriteLine("ERROR {0}", err.ErrorText); 
            } 
        } 
    } 
}

Запускаем и проверяем:

First Sample

Первое, на что стоит обратить внимание – это использование двух пространств имен (namespace):

  • Microsoft.CSharp
  • System.CodeDom.Compiler

В данных классах и содержится ключ к возможности компиляции. В нашем примере мы указываем что компилировать будем под .NET Framework 3.5, а так же указываем что мы хотим получить на выходе – Foo.exe, с возможностью запуска данного приложения.



WPF - использование навигации по страницам, добавление контролов в NavigationWindow

В WPF существует возможность создавать приложения с возможность навигации, то есть с использованием Navigation объектов, таких как Page, NavigationService и NavigationWindow. Большинство примеров на MSDN отображает, как использовать такие объекты в XBAP приложениях, но никто не запрещает нам и создавать клиентские приложения с использованием навигации по страницам.



WPF – MenuItem и важное свойство CommandTarget

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



WPF: Animated Wait Control в Expression Blend 3

В WPF мне понадобилось (захотелось) сделать контрол, который бы показывал процесс ожидания. Контрол я хотел сделать похожим на вращающийся круг, как в Vista cur. А так же мне захотелось попробовать это сделать в новом Expression Blend 3 (можно использовать 60 дневную пробную версию Expression Studio 3). Не обязательно использовать последнюю версию продукта - хватит и второй версии.




Страница  1  2  3  4  5  6