1

我是 Silverlight 的新手,想在Silverlight App中显示一些HTML。我一直在阅读一些方法,例如 Telerik 的HTMLPlaceHolderHTML Overlays,通过将一些 css 和 javascript 与应用程序混合。

问题是两者都需要我设置 windowless=true ,在经历了以下限制之后:

http://blogs.msdn.com/b/silverlight_sdk/archive/2008/11/12/limitations-of-windowless-mode-for-silverlight.aspx

我认为这不值得,有没有任何方法可以在没有无窗口设置为 true的情况下显示HTML ?

提前感谢您的帮助..

4

2 回答 2

2

从 Silverlight 4 开始,当您的应用程序用尽浏览器时,您可以使用一个WebBrowser控件。从 Silverlight 5 开始,它也可以在浏览器中运行,但需要提升对用户系统的信任。

对于非常简单的 HTML,您还可以尝试HtmlTextBlock

于 2012-09-20T13:46:43.003 回答
0

我正在使用 Telerik 的 RadRichTextBox,它可以让您渲染几乎任何类型的文档。

Herzmeister,非常感谢您的回答,在查看了您建议的 HTMLTextBlock 的代码后,我可以想出一个解决方案.. 这是我使用的代码..

.xaml

<UserControl x:Class="RadControlsSample.RadRichTextBoxTest"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"            
    xmlns:telerikHtml="clr-namespace:Telerik.Windows.Documents.FormatProviders.Html;assembly=Telerik.Windows.Documents.FormatProviders.Html"
    mc:Ignorable="d" d:DesignWidth="700" d:DesignHeight="400" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
    Loaded="Example_Loaded">

    <Grid x:Name="LayoutRoot">
        <telerik:RadRichTextBox Grid.Row="1" x:Name="richTextBox" DataContext="{Binding}" IsReadOnly="True" ShowMergeFieldsHighlight="False" IsSpellCheckingEnabled="False" />
    </Grid>
</UserControl>

。CS

using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Resources;
using Telerik.Windows.Documents.FormatProviders.Html;
using Telerik.Windows.Documents.Model;

namespace RadControlsSample
{
    public partial class RadRichTextBoxTest : UserControl
    {
        private const string SampleDocumentPath = "SampleData/SomeHtml.html";

        public RadRichTextBoxTest()
        {
            InitializeComponent();
        }

        private void Example_Loaded(object sender, RoutedEventArgs e)
        {
            //Load html file from the content file
            var fileUri = new Uri(SampleDocumentPath, UriKind.Relative);
            StreamResourceInfo streamInfo = System.Windows.Application.GetResourceStream(fileUri);
            var reader = new StreamReader(streamInfo.Stream);
            this.richTextBox.Document = new HtmlFormatProvider().Import(reader.ReadToEnd());
            this.richTextBox.Document.LayoutMode = DocumentLayoutMode.Flow;
        }
    }
}
于 2012-09-21T10:25:34.427 回答