Полезный Xaml

Все таки 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 динамически, то есть уже на этапе исполнения программы.

  • Николай

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