自定義WPF控件開發(fā)指南_第1頁
自定義WPF控件開發(fā)指南_第2頁
自定義WPF控件開發(fā)指南_第3頁
自定義WPF控件開發(fā)指南_第4頁
自定義WPF控件開發(fā)指南_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

21/25自定義WPF控件開發(fā)指南第一部分自定義控件基礎原則 2第二部分控件模板與樣式設計 4第三部分數(shù)據(jù)綁定與交互性 6第四部分命令處理與事件響應 10第五部分依賴關系屬性的實現(xiàn) 13第六部分控件視覺化與動畫 17第七部分性能優(yōu)化與可訪問性 19第八部分發(fā)布與使用自定義控件 21

第一部分自定義控件基礎原則關鍵詞關鍵要點自定義控件基礎原則

可重用性:

*

*封裝特定功能:自定義控件將特定功能或邏輯封裝成可重用組件,避免重復開發(fā)。

*輕松集成:可通過簡單的方式將控件集成到復雜的界面中,簡化應用程序開發(fā)。

*維護簡便:集中管理和更新控件邏輯,方便維護和改進。

可配置:

*自定義控件基礎原則

簡介

自定義WPF控件是創(chuàng)建滿足特定需求的UI元素的強大工具。通過遵循一組基礎原則,可以開發(fā)出可重用、健壯且可維護的自定義控件。

原則1:依賴項屬性

依賴項屬性是用于與控件進行數(shù)據(jù)綁定的公共接口。它們允許控件公開其狀態(tài)和行為,以便外部源可以對其進行修改或響應。使用依賴項屬性確保與其他應用程序或控件的兼容性。

原則2:路由事件

路由事件提供了一種機制,允許控件以一種與控件層次結構無關的方式引發(fā)和處理事件。通過使用路由事件,控件可以將其內(nèi)部狀態(tài)或用戶交互傳播到應用程序的其他部分。

原則3:樣式和模板

樣式和模板使您能夠分離控件的視覺和邏輯表示。樣式控制控件的視覺外觀,而模板控制控件的布局和內(nèi)容。這種分離提高了控件的可擴展性和自定義性。

原則4:數(shù)據(jù)模板

數(shù)據(jù)模板指定如何將數(shù)據(jù)對象呈現(xiàn)為可視化元素。它們使控件能夠動態(tài)呈現(xiàn)來自不同數(shù)據(jù)源的數(shù)據(jù)。使用數(shù)據(jù)模板可以輕松地支持不同的數(shù)據(jù)類型。

原則5:命令

命令提供了一種與控件的業(yè)務邏輯進行交互的方式,而無需訪問底層代碼。通過使用命令,實現(xiàn)了行為和表示的分離,使控件更易于維護和測試。

原則6:控件生命周期

理解控件的生命周期至關重要,以便在適當?shù)臅r候處理資源和初始化邏輯。生命周期事件允許控件響應加載、卸載、布局更改等事件。

原則7:可測試性

設計控件時,可測試性應成為首要考慮因素。單元測試和集成測試確??丶诟鞣N情況下都能按預期工作。編寫測試驅(qū)動開發(fā)代碼,并在控件生命周期的不同階段測試其行為。

原則8:可重用性

自定義控件旨在解決共同的UI需求。因此,可重用性是至關重要的。考慮多種場景下的控件可用性,包括不同的數(shù)據(jù)類型、布局和交互。

原則9:性能

性能優(yōu)化對于確保自定義控件在應用程序中流暢運行至關重要。使用高效的算法,緩存數(shù)據(jù)和避免不必要的資源使用。對控件的性能進行基準測試,并根據(jù)需要進行優(yōu)化。

原則10:文檔化

全面且準確的文檔對于控件的有效使用至關重要。提供清晰的文檔,包括控件的用法、屬性、事件和限制。文檔有助于用戶快速上手,并促進控件的廣泛采用。第二部分控件模板與樣式設計控件模板與樣式設計

控件模板

控件模板是一個XAML文件,定義了控件的外觀和行為。它包含控件的所有可視元素和定義其行為的代碼。自定義控件可以通過創(chuàng)建自定義控件模板來實現(xiàn)。

創(chuàng)建控件模板:

1.創(chuàng)建新XAML文件:在您的自定義控件項目中創(chuàng)建一個新的XAML文件。

2.定義根元素:根元素應該是控件的類型名稱,例如`<MyCustomControl>`。

3.添加可視元素:添加控件所需的所有可視元素,例如按鈕、文本塊、圖像等。

4.定義代碼行為:使用代碼隱藏或XAML事件處理程序來定義控件的代碼行為,例如按鈕單擊事件處理。

樣式

樣式是一種XAML資源,它允許您統(tǒng)一定義控件的外觀和行為,而不修改控件模板。樣式可以應用于任何類型的控件或元素。

創(chuàng)建樣式:

1.創(chuàng)建新XAML資源文件:在您的應用程序項目中創(chuàng)建一個新的XAML資源文件,例如`MyCustomStyles.xaml`。

2.定義樣式:使用`<Style>`元素定義樣式。目標類型指定樣式應用于哪種類型的控件或元素。

3.設置屬性:使用`Setter`元素設置控件的屬性值,例如背景色、邊框粗細、字體等。

控件模板與樣式的區(qū)別

*作用域:控件模板定義特定控件的外觀和行為,而樣式可以應用于任何控件或元素。

*功能性:控件模板用于創(chuàng)建新控件,而樣式用于修改現(xiàn)有控件的外觀和行為。

*可變性:控件模板不可變,而樣式可以被重新聲明并應用于不同的控件。

使用控件模板與樣式

在XAML中使用控件模板:

```xaml

<MyCustomControl>

<!--控件模板邏輯-->

</MyCustomControl>

```

在XAML中使用樣式:

```xaml

<!--按鈕內(nèi)容-->

</Button>

```

最佳實踐

*使用命名空間:在控件模板和樣式中使用命名空間,以避免名稱沖突。

*使用數(shù)據(jù)綁定:使用數(shù)據(jù)綁定來動態(tài)更新控件的外觀和行為。

*避免硬編碼值:盡量使用樣式和主題中的資源,避免硬編碼值。

*測試您的設計:在不同大小和分辨率的窗口上測試您的控件模板和樣式,以確保它們在所有情況下都能正常工作。第三部分數(shù)據(jù)綁定與交互性關鍵詞關鍵要點【數(shù)據(jù)綁定】:

1.數(shù)據(jù)綁定是一種將數(shù)據(jù)源與控件屬性關聯(lián)的技術,使控件能夠動態(tài)更新以反映數(shù)據(jù)源中的更改。

2.WPF數(shù)據(jù)綁定支持雙向、單向和單向到來源綁定,提供靈活的數(shù)據(jù)流管理。

3.借助數(shù)據(jù)綁定,開發(fā)者可以將復雜的數(shù)據(jù)模型與用戶界面分離,提高代碼的可維護性和可讀性。

【命令綁定】:

數(shù)據(jù)綁定與交互性

數(shù)據(jù)綁定是一種WPF中強大的機制,它允許控件與其基礎數(shù)據(jù)源自動同步。這簡化了應用程序開發(fā),并確保了UI反映數(shù)據(jù)源中發(fā)生的任何更改。

數(shù)據(jù)的綁定類型

WPF中有三種主要的綁定類型:

*OneWay:數(shù)據(jù)源中的更改將反映在控件中,但控件中的更改不會反映在數(shù)據(jù)源中。

*TwoWay:控件和數(shù)據(jù)源中的更改都會相互反映。

*OneWayToSource:控件中的更改只會被反映到數(shù)據(jù)源中。

數(shù)據(jù)綁定語法

數(shù)據(jù)綁定使用XAML中的綁定語法來指定:

```xml

```

其中:

*Binding-指定正在執(zhí)行綁定的元素。

*Path-指定要綁定的數(shù)據(jù)源屬性。

數(shù)據(jù)上下文

每個控件都有一個數(shù)據(jù)上下文,它定義了將控件綁定的數(shù)據(jù)源。數(shù)據(jù)上下文可以在XAML或代碼中顯式設置:

```xml

```

```csharp

textBox.DataContext=newMyViewModel();

```

交互性

交互性使控件能夠響應用戶輸入。WPF中有各種交互事件,可用于處理諸如單擊、鼠標移動和鍵盤輸入等操作。

事件處理

事件處理程序可以通過以下方式之一附加到控件:

*在XAML中使用事件處理程序?qū)傩裕?/p>

```xml

<TextBoxClick="TextBox_Click"/>

```

*在代碼中使用AddHandler()方法:

```csharp

textBox.AddHandler(Button.ClickEvent,newRoutedEventHandler(TextBox_Click));

```

命令

命令提供了一種聲明性方式來處理用戶交互。命令可以定義為可執(zhí)行的委托或方法,并通過Command屬性將其附加到控件:

```xml

```

命令參數(shù)

命令參數(shù)可用于傳遞附加數(shù)據(jù)給命令處理程序:

```xml

```

數(shù)據(jù)校驗

數(shù)據(jù)校驗有助于確??丶休斎氲臄?shù)據(jù)有效。WPF提供了ValidationRule框架,它允許創(chuàng)建自定義數(shù)據(jù)驗證邏輯:

```csharp

publicclassMyValidationRule:ValidationRule

publicoverrideValidationResultValidate(objectvalue,CultureInfocultureInfo)

//執(zhí)行校驗邏輯

}

}

```

輸入屏蔽

輸入屏蔽可以限制用戶可以輸入控件的數(shù)據(jù)類型。這可以通過使用InputMask屬性或創(chuàng)建自定義TextFormatter來實現(xiàn):

```xml

```

```csharp

textBox.TextFormatter=newMyTextFormatter();

```

總結

數(shù)據(jù)綁定和交互性是WPF的強大功能,它們簡化了應用程序開發(fā)并提供了豐富的用戶體驗。通過有效地使用這些機制,可以創(chuàng)建動態(tài)、響應用戶輸入且輕松維護的應用程序。第四部分命令處理與事件響應自定義WPF控件開發(fā)指南:命令處理與事件響應

前言

在自定義WPF控件中,命令處理和事件響應是至關重要的方面,它們允許控件與用戶交互并響應外部事件。本指南將深入探索這些概念,并提供分步說明。

理解命令和事件

*命令:是一種抽象概念,表示用戶希望執(zhí)行的操作。WPF中的命令由`ICommand`接口表示,提供了一種標準的方式來處理和路由命令。

*事件:是系統(tǒng)或用戶與控件交互時觸發(fā)的通知。WPF中的事件由`RoutedEvent`類表示,并通過事件處理程序進行處理。

創(chuàng)建命令

要創(chuàng)建自定義命令,請執(zhí)行以下步驟:

1.定義一個實現(xiàn)`ICommand`接口的新類。

2.在該類中,實現(xiàn)`CanExecute`和`Execute`方法,以分別指定命令是否可以執(zhí)行以及如何執(zhí)行命令。

3.將該命令注冊到自定義控件中,以便控件可以訪問它。

處理事件

要處理事件,請執(zhí)行以下步驟:

1.在自定義控件中,定義一個與事件相對應的事件句柄方法。

2.在該方法中,編寫處理事件的代碼。

3.將事件句柄方法注冊到事件中,以便當事件發(fā)生時調(diào)用它。

附加事件和命令

WPF提供了一種通過附加事件和附加命令來擴展控件事件和命令處理功能的方法:

*附加事件:允許控件處理外部控件中的事件,即使這些控件不是控件的子級。

*附加命令:允許其他控件執(zhí)行自定義控件中的命令,即使這些控件不是自定義控件的子級。

事件路由

當用戶與控件交互時,事件將通過事件路由系統(tǒng)傳播。事件路由包括以下步驟:

1.事件在控件的源元素上引發(fā)。

2.事件沿著控件的邏輯樹向上冒泡,直到遇到處理程序或到達頂級元素。

3.如果事件未被處理,則會沿著控件的視覺樹向下隧道,直到找到處理程序。

示例

以下示例演示了如何在自定義WPF控件中創(chuàng)建命令和處理事件:

C#

```

publicclassMyCustomControl:Control

publicMyCustomControl()

//創(chuàng)建一個自定義命令

_myCommand=newMyCommand();

//注冊自定義命令

CommandManager.RegisterClassCommandBinding(typeof(MyCustomControl),newCommandBinding(_myCommand,ExecuteMyCommand,CanExecuteMyCommand));

//處理點擊事件

MouseLeftButtonDown+=OnMouseLeftButtonDown;

}

privatevoidOnMouseLeftButtonDown(objectsender,MouseButtonEventArgse)

//處理鼠標左鍵單擊事件

}

privateboolCanExecuteMyCommand(objectparameter)=>true;

privatevoidExecuteMyCommand(objectparameter)

//執(zhí)行自定義命令

}

}

```

高級概念

*事件隧道:允許控件處理外部控件中的事件,即使這些控件不是控件的子級。

*事件冒泡:允許控件處理自己內(nèi)部事件以及來自子控件的事件。

*命令參數(shù):允許命令傳遞數(shù)據(jù),例如要執(zhí)行的操作或要操作的數(shù)據(jù)。

*驗證:通過使用`CanExecute`方法可以驗證命令的有效性,從而限制命令的執(zhí)行。

結論

通過理解命令處理和事件響應,開發(fā)者可以創(chuàng)建高度交互式且響應用戶輸入的自定義WPF控件。本指南提供了分步說明和示例,以幫助開發(fā)者有效地實現(xiàn)這些功能。第五部分依賴關系屬性的實現(xiàn)關鍵詞關鍵要點【依賴關系屬性的通知】:

1.實現(xiàn)INotifyPropertyChanged接口:在依賴關系屬性的包裝器類中實現(xiàn)INotifyPropertyChanged接口,以通知屬性值更改。

2.使用System.ComponentModel命名空間:該命名空間提供了用于觸發(fā)PropertyChanged事件的PropertyChangedEventArgs類。

3.保證線程安全性:依賴關系屬性的通知操作應保證線程安全性,以避免并發(fā)訪問導致不一致。

【依賴關系屬性的驗證】:

依賴關系屬性的實現(xiàn)

依賴關系屬性(DependencyProperty)是WPF中一種特殊類型的屬性,它允許數(shù)據(jù)從一個對象傳遞到另一個對象。它通過建立“源”對象和“目標”對象之間的依賴關系來實現(xiàn)。當源對象中的依賴關系屬性值發(fā)生變化時,目標對象中的綁定的屬性值也會相應更新。

創(chuàng)建依賴關系屬性

要創(chuàng)建依賴關系屬性,可以使用`DependencyProperty.Register()`方法。該方法接受以下參數(shù):

*名稱:屬性的名稱。

*類型:屬性的數(shù)據(jù)類型。

*所有者類型:聲明該屬性的類的類型。

*元數(shù)據(jù):可選的附加信息,例如默認值、驗證規(guī)則和回調(diào)函數(shù)。

以下是創(chuàng)建依賴關系屬性的示例代碼:

```

publicstaticreadonlyDependencyPropertyMyProperty=DependencyProperty.Register(

"MyProperty",

typeof(int),

typeof(MyClass),

newFrameworkPropertyMetadata(0,PropertyMetadataChanged));

```

注冊回調(diào)函數(shù)

要監(jiān)聽依賴關系屬性值的更改,可以注冊回調(diào)函數(shù)。有兩種類型的回調(diào)函數(shù)可供使用:

*`PropertyMetadata.PropertyChangedCallback`:在屬性值發(fā)生更改時調(diào)用。

*`PropertyMetadata.CoerceValueCallback`:在屬性值設置之前調(diào)用,允許驗證或修改值。

在上面的示例中,`PropertyMetadataChanged`方法是一個`PropertyChangedCallback`,它將在`MyProperty`的值發(fā)生更改時調(diào)用。

獲取和設置依賴關系屬性值

要獲取或設置依賴關系屬性值,可以使用以下方法:

*`GetValue(DependencyProperty)`:獲取依賴關系屬性值。

*`SetValue(DependencyProperty,object)`:設置依賴關系屬性值。

這些方法通常需要DependencyObject作為其第一個參數(shù)。DependencyObject是所有WPF元素的基礎類。

依賴關系屬性的依賴關系

依賴關系屬性可以具有其他依賴關系屬性的依賴關系。這允許當一個屬性的值發(fā)生更改時,其他屬性的值也會相應更新。要創(chuàng)建依賴關系,可以使用`RegisterAttached()`方法。

```

publicstaticreadonlyDependencyPropertyRelativeSourceProperty=DependencyProperty.RegisterAttached(

"RelativeSource",

typeof(RelativeSource),

typeof(MyClass));

```

繼承依賴關系屬性

派生類可以繼承基類的依賴關系屬性。要實現(xiàn)此操作,請在派生類中聲明屬性,如下所示:

```

publicstaticreadonlyDependencyPropertyMyProperty;

```

這將創(chuàng)建一個新的依賴關系屬性,它將從基類的屬性繼承其元數(shù)據(jù)和回調(diào)函數(shù)。

依賴關系屬性的優(yōu)點

使用依賴關系屬性提供以下優(yōu)點:

*數(shù)據(jù)綁定:允許在控件之間輕松地綁定數(shù)據(jù)。

*性能:依賴關系屬性的更改會自動傳播,無需手動更新。

*可擴展性:依賴關系屬性可以繼承,從而允許創(chuàng)建靈活和可重用的控件。第六部分控件視覺化與動畫自定義WPF控件開發(fā)指南:控件視覺化與動畫

控件視覺化

控件視覺化定義了控件的外觀和行為。它由以下元素組成:

*模板:定義控件的視覺結構和布局。

*樣式:定義控件的外觀,包括顏色、字體和邊框。

*觸發(fā)器:響應控件事件或狀態(tài)更改的規(guī)則,并更新其視覺外觀。

模板

控件模板是一個VisualTree,它定義了控件的視覺層次結構??梢允褂肵AML或代碼創(chuàng)建模板。

樣式

控件樣式是一種資源字典,它定義了控件的默認外觀。樣式可以覆蓋模板中的默認值,并可以應用于多個控件。

觸發(fā)器

觸發(fā)器是附加到特定事件或?qū)傩愿牡目丶男袨?。當滿足觸發(fā)條件時,觸發(fā)器將應用特定的操作,例如更新樣式或執(zhí)行動畫。

動畫

WPF提供了多種動畫類型,用于創(chuàng)建控件視覺效果:

*故事板:一系列動畫,可以按順序或并行執(zhí)行。

*時間線:用于創(chuàng)建平滑過度或其他基于時間的動畫。

*觸發(fā)動畫:由觸發(fā)器觸發(fā)的動畫,通常用于響應控件事件或狀態(tài)更改。

*關鍵幀動畫:通過指定一系列關鍵幀來定義動畫路徑。

動畫技術

*屬性動畫:對控件屬性進行動畫處理,例如大小、位置和顏色。

*幾何動畫:對控件的幾何形狀進行動畫處理,例如變形和路徑。

*對象動畫:對控件的整個對象進行動畫處理。

動畫屬性

動畫屬性控制動畫行為,包括:

*持續(xù)時間:動畫的持續(xù)時間。

*延遲:動畫的延遲時間。

*重復:動畫重復的次數(shù)。

*緩動函數(shù):用于控制動畫的速度和過渡。

最佳實踐

*將模板保存在單獨的資源字典中,以實現(xiàn)可重用性。

*盡早定義樣式,以避免不必要的覆蓋。

*使用觸發(fā)器來響應用戶交互或狀態(tài)更改。

*限制動畫的使用,以防止性能問題。

*使用緩動函數(shù)來創(chuàng)建平滑的過渡。

*考慮使用關鍵幀動畫來創(chuàng)建復雜動畫。

*利用自定義動畫類來實現(xiàn)更高級的動畫效果。第七部分性能優(yōu)化與可訪問性性能優(yōu)化

*減少繪制次數(shù):通過使用視覺效果(如DropShadowEffect)或自定義繪制,避免在每次重繪時重新創(chuàng)建圖形。

*使用虛擬化:對于大型數(shù)據(jù)集,使用虛擬化技術,僅在可見區(qū)域內(nèi)渲染項目。

*使用硬件加速:利用Direct3D或OpenGL等硬件加速技術提升渲染性能。

*優(yōu)化數(shù)據(jù)綁定:使用延遲綁定、分組綁定或OneWayToSource綁定,減少數(shù)據(jù)綁定的開銷。

*管理資源:釋放不使用時占用的資源,例如在控件銷毀時釋放圖像或字體。

可訪問性

*鍵盤導航:確??丶梢酝耆ㄟ^鍵盤訪問,包括導航、激活和更改值。

*輔助技術支持:控件應與輔助技術,如屏幕閱讀器,兼容。

*語義元素使用:使用正確的語義元素(如按鈕、列表項)以提供適當?shù)恼Z義信息。

*對照敏感性:確??丶Ρ榷让舾?,以增強可讀性。

*縮放支持:考慮高DPI顯示器和用戶縮放設置,確保控件在不同縮放級別下清晰可見。

*輔助功能支持:提供輔助功能,例如通過工具提示或狀態(tài)欄提供額外信息。

*鍵盤焦點:明確定義鍵盤焦點順序,并在焦點發(fā)生變化時通知輔助技術。

*鍵盤快捷鍵:支持鍵盤快捷鍵,以增強可訪問性和效率。

*無障礙文檔:提供無障礙文檔,詳細說明控件的無障礙功能和用法。

具體實現(xiàn)指南

性能優(yōu)化

*使用VisualStudio性能分析器來標識性能瓶頸。

*啟用WPF診斷功能以獲取有關控件性能的詳細數(shù)據(jù)。

*避免在布局階段進行繁重計算,考慮使用異步或后臺任務。

*緩存計算結果,避免重復計算。

*使用依賴項屬性跟蹤,僅在屬性更改時更新控件。

可訪問性

*遵循WebContentAccessibilityGuidelines(WCAG)2.0或2.1標準。

*使用MicrosoftUIAutomation庫提供無障礙信息。

*使用語義標記和ARIA屬性來提供語義和角色信息。

*確保所有控件都有描述性名稱,以便屏幕閱讀器可以識別它們。

*為交互控件提供鍵盤提示,例如Alt鍵修飾符。

*提供替代文本以描述控件中非文本內(nèi)容的外觀或目的。

通過遵循這些指南,您可以開發(fā)出高效且無障礙的自定義WPF控件,從而提高應用程序的整體性能和用戶體驗。第八部分發(fā)布與使用自定義控件關鍵詞關鍵要點構建自定義控件的NuGet包

1.創(chuàng)建一個新的NuGet項目并將其配置為目標自定義控件的.NET框架版本。

2.將自定義控件的代碼文件和資源文件添加到項目中,并使用適當?shù)拿臻g和類名。

3.創(chuàng)建一個`.nuspec`文件,其中包含包的元數(shù)據(jù)信息,例如ID、版本、標題和描述。

發(fā)布自定義控件到NuGet倉庫

1.在NuG上創(chuàng)建帳戶并登錄帳戶。

2.使用`nugetpush`命令將構建的NuGet包推送到NuGet倉庫中。

3.確保包發(fā)布后可通過``或私人倉庫進行訪問。發(fā)布與使用自定義控件

創(chuàng)建和發(fā)布NuGet包

1.創(chuàng)建一個VisualStudio解決方案,其中包含自定義控件項目和NuGet打包項目。

2.在NuGet打包項目中,配置包元數(shù)據(jù)(名稱、版本、描述等)。

3.將自定義控件項目作為依賴項添加到NuGet打包項目。

4.構建NuGet包。

發(fā)布到NuG

1.在NuG上創(chuàng)建帳戶。

2.使用NuGetCLI或NuGetPackageExplorer上傳NuGet包。

3.添加標簽以提高可發(fā)現(xiàn)性。

在WPF項目中使用自定義控件

安裝NuGet包

1.打開WPF項目并在NuGet包管理器中搜索自定義控件。

2.選擇要安裝的包并單擊“安裝”。

使用自定義控件

1.在XAML標記中添加控件命名空間:`xmlns:名稱="包命名空間"`

2.在標記中使用控件:`<名稱:控件類型/>`

示例

考慮一個名為“MyCustomControl”的自定義控件。

NuGet包信息

|字段|值|

|||

|名稱|MyCustomControl|

|版本|1.0.0|

|描述|一個帶有標題和內(nèi)容的簡單自定義控件|

XAML使用

```xml

<Windowxmlns:cc="clr-namespace:MyCustomControlNamespace;assembly=MyCustomControl">

<c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論