【问题标题】:Display HTML content in Silverlight without windowless=true在没有 windowless=true 的 Silverlight 中显示 HTML 内容
【发布时间】:2012-09-12 21:16:19
【问题描述】:

我是 Silverlight 的新手,想在 Silverlight 应用程序 中显示一些 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

我认为不值得这样做,有没有任何方法可以显示 HTML 而无需windowless 设置为 true?

提前感谢您的帮助..

【问题讨论】:

    标签: .net silverlight telerik


    【解决方案1】:

    从 Silverlight 4 开始,有一个 WebBrowser 控件,您可以在应用程序用完浏览器时使用该控件。从 Silverlight 5 开始,它也可以在浏览器中使用,但需要在用户系统上使用 elevated trust

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

    【讨论】:

    • 非常感谢您的回答。我正在尝试使用 HtmlTextBlock,但你知道它有点严格.. 我错过了一个结束标签,它引发了一个错误.. 虽然 ^_^ 没关系,但现在它无法识别空格  。无论如何,我正在尝试一下,因为我不想使用 WebBrowser。感谢您的帮助.. 谢谢..
    【解决方案2】:

    我正在使用 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;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多