Отображение HTML-кодированного стиля в WPF - PullRequest
1 голос
/ 08 июня 2011

Я получаю строку из базы данных, которая включает в себя стиль HTML (не знаю, как она называется), и я не хочу отображать ее в своем приложении WPF.

Я могу декодировать в ViewModel, чтобы использовать библиотеку .net.

Я пытался использовать метод WebUtility.HtmlDecode (string), но он ничего не делает (и, вероятно, не должен).

Вот как может выглядеть строка:

<span style="background-color: rgb(255, 102, 0);" class="Apple-style-span">This</span><div><span style="background-color: rgb(255, 102, 0);" class="Apple-style-span">is</span></div><div><span style="background-color: rgb(255, 102, 0);" class="Apple-style-span">a</span></div><div><span style="background-color: rgb(255, 102, 0);" class="Apple-style-span">weird</span></div><div><span style="background-color: rgb(255, 102, 0);" class="Apple-style-span">look</span></div><div></div>

Получение только текста, который я мог бы сделать с помощью небольшого XML-кода, но я бы предпочел использовать то, что уже существует. Было бы здорово получить и стили, но я не собираюсь включать браузер WinForms.

Обратите внимание, мне нужно только отображать данные, а не редактировать их.

1 Ответ

2 голосов
/ 08 июня 2011

Это не имеет ничего общего с кодировкой, речь идет о преобразовании. Если вы не хотите использовать элемент управления WebBrowser, вам необходимо преобразовать из HTML в содержимое потока , которое может отображаться в FlowDocument . Вы можете либо написать необходимый код самостоятельно, либо посмотреть, подходит ли этот конвертер , который конвертирует оба способа (или любой другой существующий конвертер в этом отношении).


Вам не обязательно нужна правильная HTML-страница, чтобы веб-браузер отображал ее, вы можете просто сделать это:

string htmlString = "<span style=\"background-color: rgb(255, 102, 0);\" class=\"Apple-style-span\">This</span><div><span style=\"background-color: rgb(255, 102, 0);\" class=\"Apple-style-span\">is</span></div><div><span style=\"background-color: rgb(255, 102, 0);\" class=\"Apple-style-span\">a</span></div><div><span style=\"background-color: rgb(255, 102, 0);\" class=\"Apple-style-span\">weird</span></div><div><span style=\"background-color: rgb(255, 102, 0);\" class=\"Apple-style-span\">look</span></div><div></div>";
wb.NavigateToString(htmlString);

Но в идеале вы можете сначала обернуть входящую строку в соответствующий html-фрейм, что должно быть довольно легко сделать.

...