欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
閑話(huà)WPF之二三(WPF中的ControlTemplate [1])

通過(guò)前面的介紹,我們已經(jīng)知道WPF支持用Style Setters修改控件的屬性值,以改變控件的外觀(guān)。我們知道,WPF的任何控件都有視覺(jué)樹(shù)和邏輯樹(shù)。但是Style有它自己的局限性:它只能修改控件已有樹(shù)型結構的屬性,不能修改控件的樹(shù)型層次結構本身。而在實(shí)際運用中,我們常常需要對控件進(jìn)行更高級的自定義。此時(shí),可以需要使用ControlTemplate才能實(shí)現。

在WPF中,ControlTemplate用來(lái)定義控件的外觀(guān)。我們可以為控件定義新的ControlTemplate來(lái)實(shí)現控件結構和外觀(guān)的修改。同樣,我們先看一個(gè)例子:

<Style TargetType="Button">
  <Setter Property="OverridesDefaultStyle" Value="True"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="Button">
        <Grid>
          <Ellipse Fill="{TemplateBinding Background}"/>
          <ContentPresenter HorizontalAlignment="Center"
                            VerticalAlignment="Center"/>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

從例子代碼我們可以看出,ControlTemplate含有模板的語(yǔ)義。也就是說(shuō)它影響的應該是多個(gè)控件。而這個(gè)功能恰好可以利用Style實(shí)現。所以,在理解了Style之后,這樣的代碼應該不會(huì )感到陌生。首先把OverridesDefaultStyle設置為T(mén)rue,表示這個(gè)控件不使用當前Themes的任何屬性。然后用Setters修改控件的Template屬性。我們定義了一個(gè)新的ControlTemplate來(lái)設置新的值。

同樣地,ControlTemplate也使用TargetType屬性,其意義與Style的TargetType一樣。它的x:Key屬性也是如此。然后,由一個(gè)Grid來(lái)表示控件的視覺(jué)內容。其中的TemplateBinding與Binding類(lèi)似,表示當前Ellipse的顯示顏色與Button的Background屬性保持同步。TemplateBinding可以理解為Binding在模板中的特例。而另一個(gè)ContentPresenter與WPF的基本控件類(lèi)型有關(guān),一種是ContentControl,一個(gè)是ItemControl。在上面的例子中定義的是基于ContentControl的Button。所以使用ContentPresenter來(lái)表示內容的顯示。

WPF中每個(gè)預定義的控件都有一個(gè)默認的模板,因此,在我們學(xué)習自定義模板(也就是自定義控件)之前,可以先熟悉了解WPF的默認模板。為了便于查看模板的樹(shù)形結構層次,我們可以將模板輸出為XML文件格式,這樣能有助于理解。

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = new string(‘ ‘, 4);
settings.NewLineOnAttributes = true;
StringBuilder strbuild = new StringBuilder();
XmlWriter xmlwrite = XmlWriter.Create(strbuild, settings);
XamlWriter.Save(ctrl.Template, xmlwrite);

這里的ctrl是一個(gè)實(shí)例化的Control類(lèi)。并且Control需要已經(jīng)顯示在屏幕上,否則Control.Template可能為NULL。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
WPF控件模板
WPF的Presenter(ContentPresenter)
【W(wǎng)PF學(xué)習】第六十章 創(chuàng )建控件模板
WPf自定義按鈕模版,鼠標移入背景保持不變
深入WPF
閑話(huà)WPF之二五(WPF中的ControlTemplate [3])
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久