08.02.08

Полезный Xaml

Tags: WPF (.Net 3.0), Программирование / 5:16 pm , Victor Laskin

Все таки Xaml - это полезная вещь. Я написал коротенькую функцию, с помощью которой можно задавать содержимое TextBlock’ов с помощью xaml кода. Это нужно, когда содержимое нужно менять походу выполнения программы. Например, написав:

SetInlines(MyCuteTextBlock, "Крутой текст с <Bold>выделениями</Bold>, переносами строк,<LineBreak/><Underline>подчеркиваниями</Underline> и тому подобными стильными вещицами.");

получаем следующий результат:

 

А добиться такой простой записи позволяет простая функция:

using System.IO;
using System.Windows.Markup;
using System.Xml;
//Create inlines from xaml string
private void SetInlines(TextBlock tb, string XamlCode)
{
    string Op = "<TextBlock xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">";
            string Ed = "</TextBlock>";
            StringReader stringReader = new StringReader(Op + XamlCode + Ed);
            XmlReader xmlReader = XmlReader.Create(stringReader);
            TextBlock TempTB = (TextBlock)XamlReader.Load(xmlReader);
            //Lets copy inlines
            tb.Inlines.Clear();
            List<Inline> inls = new List<Inline>(TempTB.Inlines);
            foreach (Inline nl in inls)
                tb.Inlines.Add(nl);
}

Здесь используется класс XamlReader, который позволяет парсить XAML динамически, то есть уже на этапе исполнения программы.

1 Comment »

  1. Николай said,
    June 21, 2008 at 2:04 pm

    Большое спасибо за код! #)
    Как раз то, что мне нужно - да и еще в таком наглядном виде!

Leave a Comment

Or use your OpenID:

Информация для блогоспаммеров - не тратьте свое время, все спам комментарии все равно будут удалены.