程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#開發WPF/Silverlight動畫及游戲系列教程(Game Tutorial):(四十二)(2)

C#開發WPF/Silverlight動畫及游戲系列教程(Game Tutorial):(四十二)(2)

編輯:關於C語言

當我們打開QXChildWindow.cs文件可以看到,此QXChildWindow模板控件繼承自Control,且通過this.DefaultStyleKey = typeof(QXChildWindow);這句話來實現與Generic.xaml中的模板界面對接。既然是非partial文件,因此其拓展起來還是很方便的。我也曾嘗試使用此方法來實現ChildWindow,功能是有了,但過程很是別扭,例如模板中對中文的支持不好;重載OnApplyTemplate()方法中的base.OnApplyTemplate()在控件加載中並不靈活等等,個人感覺從拓展度及開發難度上說效果並非最理想。

3)通過用戶控件來實現。Silverlight中的用戶控件大家應該再熟悉不過了,此時肯定會有朋友質疑它是否真的如此萬能?連ChildWindow也可以實現嗎?其實用戶控件本身繼承自UserControl,既然是面向對象的,又為何不能呢?下面是我寫的QXChildWindow界面部分代碼:

<UserControl x:Class="QXGameEngine.Control.QXChildWindow"
XMLns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
XMLns:x="http://schemas.microsoft.com/winfx/2006/xaml" MouseLeftButtonDown="UserControl_MouseLeftButtonDown">
< Canvas>
  <Canvas x:Name="Head" MouseLeftButtonUp="Head_MouseLeftButtonUp" MouseMove="Head_MouseMove">
   <ContentPresenter x:Name="HeadPresenter" />
   <Rectangle x:Name="CloseButton">
    <ToolTipService.ToolTip>
     <TextBlock x:Name="Tip" Text="關閉" />
    </ToolTipService.ToolTip>
   </Rectangle>
  </Canvas>
  <Canvas x:Name="Body">
   <ContentPresenter x:Name="BodyPresenter" />
  </Canvas>
 </Canvas>
< /UserControl>

整個xaml就是如此簡單,但是卻蘊涵著高度的靈活性,此話怎講?不妨先看下面這張結構描述圖:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved