DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 用XAML做網頁!!—終結篇(上)
用XAML做網頁!!—終結篇(上)
編輯:XML詳解     

 本文示例源代碼或素材下載

用XAML做網頁!!—終結篇(上)

  迄今為止的設計都很順利,但這次就不得不接觸我前面所說的非常糟糕的流文檔了,但在此之前先來把標題弄好:

用XAML做網頁!!—終結篇(上)

<BorderBorderBrush="#6FA34000"BorderThickness="1"Padding="16,8"Margin="24,24,48,0"CornerRadius="5">
  <Border.Background>
    <LinearGradIEntBrushEndPoint="0,1"StartPoint="1,0">
      <GradIEntStopColor="#FFFFBF6A"Offset="1"/>
      <GradIEntStopColor="#FFFFEFCA"Offset="0"/>
    </LinearGradIEntBrush>
  </Border.Background>
  <TextBlockForeground="#FFB95400"FontSize="20">MailMail簡介</TextBlock>
</Border>

  效果:

用XAML做網頁!!—終結篇(上)

  接下來就是流文檔嵌入工作了,還記得之這篇文章中編輯的流文檔嗎?我的計劃是使用一個Frame元素嵌入這個流文檔,Frame元素類似於網頁中的iFrame,相當於內嵌的一個小浏覽器,Frame可以進行導航,這樣在需要時可以通過超鏈接來導航以顯示各個頻道的內容。


 

現在就插入一個Frame元素到標題下面:

用XAML做網頁!!—終結篇(上)

<FramePadding="0,0,24,0"Source="MailMailDoc.xaml"/>

  Source指向了我們以前編輯的那個流文檔,這看起來很好,但是如果你在IE中預覽它的效果的話,你就會震驚了:

用XAML做網頁!!—終結篇(上)

  再往下看:

用XAML做網頁!!—終結篇(上)

  如果非要我用一個字來作出評價,還不允許帶髒字的話,那就是“慘”。

  我嘗試過很多方法進行調整,比如列寬、列間距等等,均告無效,它始終都會以如此糟糕的形態出現。

  分析其原因:

  流文檔的默認閱讀器是FlowDocumentReader,這種閱讀器過分復雜,並且我感覺很不完善。解決辦法只能是在流文檔文件中,為文檔套上我們想要使用的閱讀器FlowDocumentPageVIEwer,天哪,這令我作嘔,我還怎麼在多處重用流文檔?

  但這樣問題還未解決,文檔被嵌入後仍然不能橫向充滿容器。

  這是因為我們的Frame沒有固定的尺寸,被嵌入的流文檔智商很低,無法跟隨Frame進行伸縮,所以始終保持在一個窄小的橫向空間中。解決方法還是用的一個龌龊的偏方,將Frame的寬度綁定到上層容器的實際寬度屬性上:Width="{Binding ElementName=Content,Path=ActualWidth}"。


 

這方法有個後遺症,就是假如你浏覽器寬度在閱覽期間一直不變或者只是增大,那不會產生問題,但如果你嘗試在閱讀時縮小浏覽器寬度,那麼頁面不會隨之縮小。

  WPF的液態布局中容器與內容間無法統一的缺陷真是太糟糕了,至少我一直都沒找到優雅的方法。

  除此之外,還有一點讓人不可理解,就是在此頁面定義的樣式不會影響到內嵌的流文檔,也就是說想定義樣式就必須得在流文檔裡定義,這再次粉碎了我重用流文檔的念頭。

  經過一番痛苦的蹂躏,先前的流文檔被修改為這樣:

  Code

<Page
XMLns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
XMLns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <FlowDocumentScrollVIEwerVerticalScrollBarVisibility="Auto"Zoom="120">
    <FlowDocumentIsOptimalParagraphEnabled="True"FontFamily="Tahoma,微軟雅黑"Foreground="#FFB95400"ColumnGap="0"ColumnRuleWidth="0">
    <FlowDocument.Resources>
    <!--MailMail字符突出顯示樣式-->
    <Stylex:Key="MailMailStyle"TargetType="Run">
      <SetterProperty="FontFamily"Value="Nina"/>
      <SetterProperty="FontWeight"Value="Bold"/>
      <SetterProperty="Foreground"Value="#FFF88900"/>
    </Style>
        <!--超鏈接樣式-->
        <StyleTargetType="Hyperlink">
          <!--設置單擊超鏈接的事件處理程序-->
          <SetterProperty="Foreground"Value="#209AC2"/>
          <!--清除文字修飾(去掉下劃線)-->
          <SetterProperty="TextBlock.TextDecorations"Value="{x:Null}"/>
          <Style.Triggers>
            <TriggerProperty="IsMouSEOver"Value="True">
              <SetterProperty="Foreground"Value="#F27D00"/>
              <!--在鼠標懸停時顯示下劃線-->
              <SetterProperty="TextBlock.TextDecorations">
                <Setter.Value>
                  <TextDecorationCollection>
                    <TextDecorationLocation="Underline"/>
                  </TextDecorationCollection>
                </Setter.Value>
              </Setter>
            </Trigger>
          </Style.Triggers>
        </Style>
        <!--段落樣式-->
        <StyleTargetType="Paragraph">
          <SetterProperty="Margin"Value="8"/>
        </Style>
      </FlowDocument.Resources>
  <!--內容-->
  <Paragraph>
    <!--內嵌環繞區域-->
    <FigureWidth="160"Height="150"Padding="4"Margin="2">
      <!--流文檔內的控件容器-->
      <BlockUIContainer>
        <!--一個帶邊框的圖片-->
        <BorderSnapsToDevicePixels="True"BorderThickness="1"Padding="3"BorderBrush="#999">
          <ImageSource="/School/UploadFiles_7810/201103/20110325000420132.jpg"Stretch="UniformToFill"/>
        </Border>
      </BlockUIContainer>
    </Figure>
    <!--Run,內聯字符串,貌似和使用Span沒什麼區別,相當於Html的<span>-->
    <RunStyle="{StaticResourceMailMailStyle}">MailMail</Run>是一款獨特的郵件發送工具,或許它獨特到你從未感受過的地步,它可使你通過輕松、簡單、愉快的操作完成日常郵件發送操作,當然,它肯定不是因“會發郵件”而獨特,而是在於“怎麼發”,相信我,你一定要自己來感受一下。
  </Paragraph>
  <Paragraph>
    通過
    <RunStyle="{StaticResourceMailMailStyle}">MailMail</Run>,你可以達成很多你所未曾嘗試的郵箱應用,如備份文件、分享音樂、分發資料、提交工作文檔、群發消息等,
    <RunStyle="{StaticResourceMailMailStyle}">MailMail</Run>提供了巧妙的選項設置及完善的配置系統讓你得心應手地做這些事。
  </Paragraph>
  <Paragraph>
    當然,好東西也有壞處:
    <RunStyle="{StaticResourceMailMailStyle}">MailMail</Run>會讓你的郵件服務商頭大,因為他們許諾的1G、2G、5G空間可能都要被你充分利用掉。是的,你有很高幾率發上瘾,就像一句老話:“一發不可收拾”。
  </Paragraph>
  <Paragraph>
    <!--LineBreak,換行符,相當於Html的<br/>-->
    <LineBreak/>
    相關網址:
  </Paragraph>
  <!--List,列表,相當於Html的<ul>-->
  <List>
    <!--ListItem,列表項,相當於Html的<li>-->
    <ListItem>
      <Paragraph>
        <!--Hyperlink,超鏈接,相當於Html的<a>-->
        介紹及幫助:<HyperlinkNavigateUri="http://www.cnblogs.com/SkyD/archive/2008/08/09/1264083.html%22%3ehttp:/www.cnblogs.com/SkyD/archive/2008/08/09/1264083.Html%3c/Hyperlink>
      </Paragraph>
    </ListItem>
    <ListItem>
      <Paragraph>
        問題反饋及建議提交:<HyperlinkNavigateUri="http://www.cnblogs.com/SkyD/articles/1264078.html%22%3ehttp:/www.cnblogs.com/SkyD/articles/1264078.Html%3c/Hyperlink>
      </Paragraph>
    </ListItem>
    <ListItem>
      <Paragraph>
        更新信息及下載:<HyperlinkNavigateUri="http://www.cnblogs.com/SkyD/articles/1264080.html%22%3ehttp:/www.cnblogs.com/SkyD/articles/1264080.Html%3c/Hyperlink>
      </Paragraph>
    </ListItem>
  </List>
</FlowDocument>
  </FlowDocumentScrollVIEwer>
</Page>

  請將這個保存為Info.xaml,然後將Fream元素也修改一下:

<FramePadding="0,0,24,0"Source="Info.xaml"Width="{BindingElementName=Content,Path=ActualWidth}"/>

  效果:

用XAML做網頁!!—終結篇(上)


 

 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved