日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
WPF自定義窗口相關(guān)方法介紹

在這篇文章中我們將會(huì)為大家介紹一下有關(guān)WPF自定義窗口的繼承方法。這一方面的知識(shí)點(diǎn)對(duì)于初學(xué)者來說是非常重要的。我們需要牢固掌握這一技巧。#t#

為朝陽等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及朝陽網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、朝陽網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

假設(shè)我們寫好的父窗口類為BaseWindow,對(duì)應(yīng)BaseWindow.cs和BaseWindow.xaml, 要繼承它的窗口為Window1,對(duì)應(yīng)Window1.cs和Window1.xaml,我們常常進(jìn)行的動(dòng)作是將VS為我們自動(dòng)生成的代碼中的如下語句:

  1. public partial class 
    Window1 : Window

修改成:

  1. public partial class 
    Window1 : BaseWindow

但編譯后,你會(huì)得到一個(gè)錯(cuò)誤:Window1有著不同的基類。

這是因?yàn)樵趙indow1.xaml中

 
 
 
  1. < Window
  2. xmlns="http://schemas.
    microsoft.com/winfx/2006
    /xaml/presentation"
  3. xmlns:x="http://schemas.
    microsoft.com/winfx/2006/xaml"
  4. x:Class="InheritWindow
    Demo.Window1"
  5. Width="300" Height="300">
  6. < Grid x:Name=
    "LayoutRoot"/>
  7. < /Window>

我們的WPF自定義窗口繼承了Window類,打開Window1.g.cs也可以看到這一點(diǎn)(這是VS自動(dòng)生成的一個(gè)中間文件,可以在Window1的InitializeComponent()方法上“轉(zhuǎn)到定義”來跳轉(zhuǎn)到該文件,也可以在Obj"Debug目錄下找到)。這就使得我們的Window1同時(shí)繼承Window和BaseWindow類,多繼承是不被允許的。

那么自然地,需要修改Window1.xaml,將其中的根“Window”,修改成我們的BaseWindow:

 
 
 
  1. < src:BaseWindow xmlns=
    "http://schemas.microsoft.
    com/winfx/2006/xaml/presentation"
  2. xmlns:x="http://schemas.
    microsoft.com/winfx/2006/xaml"
  3. x:Class="InheritWindowDemo.
    Window1"
  4. xmlns:src="clr-namespace:
    InheritWindowDemo"
  5. Height="300"
  6. Width="300">
  7. < Grid>
  8. < /Grid>
  9. < /src:BaseWindow>

心想,這下可以編譯通過了吧,抱歉,不行,又得到另一個(gè)編譯錯(cuò)誤:src:BaseWindow不能是Xaml文件的根,因?yàn)樗怯蒟aml定義的,目前我避免這個(gè)問題的辦法是讓BaseWindow僅僅在C#中定義(即,沒有BaseWindow.xaml,只有BaseWindow.cs)。

OK,WPF自定義窗口編譯順利通過,繼承成功。


文章標(biāo)題:WPF自定義窗口相關(guān)方法介紹
本文網(wǎng)址:http://www.dlmjj.cn/article/dhgdhge.html