Monthly Archives: April 2008

Новый хостинг

В ближайшее время блог будет перенесен на новый хостинг – возможны сбои в работе.

 Добавление: переезд завершен. Благодаря Unicode UTF8 почти никто не пострадал.

Возможности биндинга в XAMLе

А знаете ли Вы, что в XAML можно биндинг описать вот так:

<Border.Background>

<Binding Path=Background>

<Binding.RelativeSource>

<RelativeSource Mode=FindAncestor AncestorType={x:Type ListBoxItem} AncestorLevel=1/>

</Binding.RelativeSource>

</Binding>

</Border.Background>

То есть можно связать свойство элемента с его родителем-контейнером. Этот биндинг очень удобно использовать при написании всяких ControlTemplate. В данном примере приведен кусок из шаблона элемента листбокса, который содержит в себе некий элемент оформления Border. Так вот цвет заливки этой рамки на элементе можно привязать к цвету самого элемента. Удобно.

Хорошая книжка по WPF

Хочу порекомендовать хорошую книжку по WPF, Pro WPF in C# 2008, которую можно скачать с pdfchm.com. Достаточно сказать, что книжка объемом более тысячи страниц и освещает много аспектов, опущенных в аналогичных изданиях.

Хорошая книжка по WPF

Напоминаю, что на вышеуказанном сайте с книжками надо регистрироваться.

Перевод XAML в HTML и как это можно использовать

Если ввести в гугле XAML to HTML то выпадет ссылка на програмку конвертации с исходниками. Конечно возможности этой конвертации ограничены, и не потому что утилита предназначена лишь для описания самого подхода к подобной конвертации, а потому что возможности XAML сильно шире возможностей HTML.

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

Например:

  /// <summary>

  /// Interaction logic for Window1.xaml

  /// </summary>

 

  public partial class Window1 : System.Windows.Window

  {

 

    public Window1()

    {

      InitializeComponent();

    }

Для реализации этого я всего лишь слегка доработал утилитку, добавив RichTextBox, содержимое которого переводится в XAML :

 string os = XamlWriter.Save(InputText.Document);

 

Об классах XamlReader/XamlWriter я писал немного тут, а таже на сайте готдотнет есть моя статейка на эту тему.

Итого получаем конвертацию содержимого RichTextBox прямо в HTML:

Xaml2Html

А еще можно обратно ковертировать HTML в XAML, и использовать в своих программах.

Работа с FTP из C# – легко!

Нашел на одном из западных блогов очень удобную библиотеку для работы с фтп.

Чтоб загрузить файл на свой сервер достаточно написать пару строк:

using BytesRoad.Net.Ftp;

… 

string FtpServer = “my.server.ru”;

string Username = “username”;

string Password = “password”;

string RemotePath = “\\folderonserver/”;

 

public void UploadFile(string LocalFile)

{

 // get instance of the FtpClient

 FtpClient client = new FtpClient();

 

 // use passive mode

 client.PassiveMode = true;

 

 client.Connect(Timeout, FtpServer, 21);

 client.Login(Timeout, Username, Password);

 

 // build the target file path

 string target = System.IO.Path.Combine(RemotePath,

 System.IO.Path.GetFileName(LocalFile)).Replace(“\\”, “/”);

 

 // synchronously upload the file

 client.PutFile(Timeout, target, LocalFile);

 

 //Disconnect

 client.Disconnect(Timeout);

}

Обратите внимание, что используется passive mode

Библиотека распространяется по лицензии GPL, то есть бесплатно. Скачать можно отсюда.