国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

WPF .NET 7.0學(xué)習(xí)整理(一)

這篇具有很好參考價(jià)值的文章主要介紹了WPF .NET 7.0學(xué)習(xí)整理(一)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

參照文檔進(jìn)行不系統(tǒng)的整理,看到那寫(xiě)到那O.o

依賴屬性

DependencyProperty:使用專有字段支持屬性的標(biāo)準(zhǔn)模式的替代方法。
DependencyObject:定義了可以注冊(cè)和擁有依賴屬性的基類。

public static readonly DependencyProperty IsSpinningProperty = DependencyProperty.Register(
    "IsSpinning", typeof(bool),
    typeof(MainWindow)
    );

public bool IsSpinning
{
    get => (bool)GetValue(IsSpinningProperty);
    set => SetValue(IsSpinningProperty, value);
}

屬性及其支持性 DependencyProperty 字段的命名約定非常重要。 字段總是與屬性同名,但其后面追加了 Property 后綴。

個(gè)人注解:WPF簡(jiǎn)直是個(gè)神奇的軟件,包括MVVM中,竟然是靠View和ViewModel命名差一個(gè)Model完成綁定,當(dāng)然也可以指定綁定的位置。

小點(diǎn):依賴屬性包裝器
不是附加屬性的 WPF 依賴屬性通過(guò)實(shí)現(xiàn) get 和 set 訪問(wèn)器的 CLR 包裝器進(jìn)行公開(kāi)。 get 和 set 訪問(wèn)器通過(guò)DependencyObject.GetValue 和 DependencyObject.SetValue 調(diào)用與底層屬性系統(tǒng)交互,并以參數(shù)的形式傳入依賴屬性標(biāo)識(shí)符。 依賴屬性的使用者通常不會(huì)直接調(diào)用GetValue 或 SetValue,但如果要實(shí)現(xiàn)自定義依賴屬性,則會(huì)在包裝器中使用這些方法。

注冊(cè)屬性:
請(qǐng)?jiān)陬惖闹黧w中(但在任何成員定義之外)調(diào)用 Register 方法。在以下示例中,Register 的第一個(gè)參數(shù)將依賴屬性命名為 AquariumGraphic。

// Register a dependency property with the specified property name,
// property type, owner type, and property metadata. Store the dependency
// property identifier as a public static readonly member of the class.
public static readonly DependencyProperty AquariumGraphicProperty =
    DependencyProperty.Register(
      name: "AquariumGraphic",
      propertyType: typeof(Uri),
      ownerType: typeof(Aquarium),
      typeMetadata: new FrameworkPropertyMetadata(
          defaultValue: new Uri("http://www.contoso.com/aquarium-graphic.jpg"),
          flags: FrameworkPropertyMetadataOptions.AffectsRender,
          propertyChangedCallback: new PropertyChangedCallback(OnUriChanged))
    );
    // Declare a read-write property wrapper.
public Uri AquariumGraphic
{
    get => (Uri)GetValue(AquariumGraphicProperty);
    set => SetValue(AquariumGraphicProperty, value);
}

依賴屬性默認(rèn)單向綁定OneWay,但是可設(shè)置為雙向綁定TwoWay,或者直接設(shè)置默認(rèn)綁定時(shí)TwoWay。
只讀依賴屬性
最經(jīng)典的IsMouseOver
特點(diǎn)是:無(wú)法賦值,不能綁定,不能用于動(dòng)畫(huà),不能驗(yàn)證等;
主要目的是結(jié)合屬性觸發(fā)器 (Trigger) 來(lái)實(shí)現(xiàn)樣式的切換。
設(shè)置只讀屬性如下:
一、注冊(cè)

 // 只讀屬性的定義與注冊(cè)
 //在元數(shù)據(jù)的實(shí)例中給這個(gè)只讀屬性設(shè)置默認(rèn)值為 false。因?yàn)橐婚_(kāi)始并沒(méi)有選擇文件,當(dāng)選擇文件時(shí),該實(shí)例獲得為true
 
        private static DependencyPropertyKey IsFilePickedPropertyKey = DependencyProperty.RegisterReadOnly("IsFilePicked", typeof(bool), typeof(FilePicker), new PropertyMetadata(false));
        public static DependencyProperty IsFilePickedProperty = IsFilePickedPropertyKey.DependencyProperty;

**注:**創(chuàng)建只讀依賴屬性的過(guò)程在許多方面類似于創(chuàng)建讀寫(xiě)依賴屬性,但有以下區(qū)別:

1.注冊(cè)只讀屬性時(shí),需要調(diào)用 RegisterReadOnly 而不是 Register。

2.實(shí)現(xiàn) CLR 屬性包裝器時(shí),請(qǐng)確保它沒(méi)有公共 set 訪問(wèn)器。

3.RegisterReadOnly 返回 DependencyPropertyKey 而不是 DependencyProperty。 將 DependencyPropertyKey 存儲(chǔ)在非公共類成員中
二、CLR包裝

// 只讀屬性的包裝
//由于這是個(gè)只讀屬性,所以只需要 get 段就可以
        public bool IsFilePicked
        {
            get { return (bool)GetValue(IsFilePickedProperty); }
        }

三、通過(guò)DependencyPropertyKey賦值
使用 SetValue 方法來(lái)賦值,SetValue 有兩個(gè)重載,要為只讀屬性賦值,需使用第二個(gè)

SetValue(DependencyPropertyKey key, object value)

就像下邊這個(gè)

SetValue(IsFilePickedPropertyKey, true);

四、應(yīng)用部分
模板中增加以下 XAML 代碼,即可:

<ControlTemplate.Triggers>
        <Trigger Property="IsFilePicked" Value="True">
            <!--顯示綠色邊框-->
            <Setter Property="BorderBrush" Value="Green" />
            <Setter Property="BorderThickness" Value="2" />
        </Trigger>
    </ControlTemplate.Triggers>

依賴屬性over 0.0
XAML
標(biāo)記擴(kuò)展是一個(gè) XAML 語(yǔ)言概念。 用于提供特性語(yǔ)法的值時(shí),大括號(hào)({ 和 })表示標(biāo)記擴(kuò)展用法。 此用法指示 XAML 處理不要像通常那樣將特性值視為文本字符串或者可轉(zhuǎn)換為字符串的值。
WPF 應(yīng)用編程中最常用的標(biāo)記擴(kuò)展是 Binding(用于數(shù)據(jù)綁定表達(dá)式)以及資源引用 StaticResource 和 DynamicResource。 通過(guò)使用標(biāo)記擴(kuò)展,即使屬性通常不支持特性語(yǔ)法,也可以使用特性語(yǔ)法為屬性提供值。 標(biāo)記擴(kuò)展經(jīng)常使用中間表達(dá)式類型實(shí)現(xiàn)一些功能,例如,推遲值或引用僅在運(yùn)行時(shí)才存在的其他對(duì)象。
such as:

<Window x:Class="index.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="100" Width="300">
    <Window.Resources>
        <SolidColorBrush x:Key="MyBrush" Color="Gold"/>
        <Style TargetType="Border" x:Key="PageBackground">
            <Setter Property="BorderBrush" Value="Blue"/>
            <Setter Property="BorderThickness" Value="5" />
        </Style>
    </Window.Resources>
    <Border Style="{StaticResource PageBackground}">
        <StackPanel>
            <TextBlock Text="Hello" />
        </StackPanel>
    </Border>
</Window>

其中,一般將<Window.resources></Window.resources>中的單獨(dú)建一個(gè)xaml存貯,作為一種固定風(fēng)格,方便其他頁(yè)面的其他控件引用,簡(jiǎn)化代碼量。
這里是一些xaml的擴(kuò)展文檔。
X:命名
x:Key:為 ResourceDictionary(或其他框架中的類似字典概念)中的每個(gè)資源設(shè)置唯一的鍵。 在典型的 WPF 應(yīng)用標(biāo)記中的所有 x: 用法中,x:Key 可能占到 90%。

x:Class:向?yàn)?XAML 頁(yè)提供代碼隱藏的類指定 CLR 命名空間和類名。 必須具有這樣一個(gè)類才能支持每個(gè) WPF 編程模型的代碼隱藏,因此即使沒(méi)有資源,也幾乎總是能看到映射的 x:。

x:Name:處理對(duì)象元素后,為運(yùn)行時(shí)代碼中存在的實(shí)例指定運(yùn)行時(shí)對(duì)象名稱。 通常,經(jīng)常為 x:Name 使用 WPF 定義的等效屬性。 此類屬性特定映射到 CLR 后備屬性,因此更便于進(jìn)行應(yīng)用編程,在應(yīng)用編程中,經(jīng)常使用運(yùn)行時(shí)代碼從初始化的 XAML 中查找命名元素。 最常見(jiàn)的此類屬性是 FrameworkElement.Name。 在特定類型中不支持等效的 WPF 框架級(jí) Name 屬性時(shí),仍然可以使用 x:Name。 某些動(dòng)畫(huà)方案中會(huì)發(fā)生這種情況。

x:Static:啟用一個(gè)返回靜態(tài)值的引用,該靜態(tài)值不是與 XAML 兼容的屬性。

x:Type:根據(jù)類型名稱構(gòu)造 Type 引用。 用于指定采用 Type(例如 Style.TargetType)的特性,但屬性經(jīng)常具有本機(jī)的字符串到 Type 的轉(zhuǎn)換功能,因此使用 x:Type 標(biāo)記擴(kuò)展用法是可選的。
其他的
應(yīng)用程序或程序集中的自定義類
XAML有兩種方法:在代碼隱藏或其他生成主 Windows Presentation Foundation (WPF) 應(yīng)用程序的代碼內(nèi)在單獨(dú)程序集中作為類(例如用作類庫(kù)的可執(zhí)行文件或 DLL)
(1)在應(yīng)用程序中定義自定義類的優(yōu)點(diǎn)在于此方法相對(duì)輕量,可減少在主應(yīng)用程序可執(zhí)行文件外引入單獨(dú)程序集時(shí)遇到的部署和測(cè)試問(wèn)題。
(2)創(chuàng)建類庫(kù)的優(yōu)點(diǎn)在于可在多個(gè)不同的應(yīng)用程序間共享任意此類自定義類。 通過(guò)使用單獨(dú)的庫(kù),更易于控制應(yīng)用程序的版本控制問(wèn)題,并可簡(jiǎn)化類創(chuàng)建過(guò)程,在此過(guò)程中,所需的類用法是作為 XAML 頁(yè)面上的根元素。
無(wú)論定義在相同還是不同的程序集中,自定義類若要在 XAML 中用作元素,都需要在 CLR 命名空間和 XML 命名空間之間進(jìn)行映射。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-696656.html

到了這里,關(guān)于WPF .NET 7.0學(xué)習(xí)整理(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【NET 7.0、OpenGL ES】使用Silk.NET渲染MMD,并實(shí)時(shí)進(jìn)行物理模擬。

    【NET 7.0、OpenGL ES】使用Silk.NET渲染MMD,并實(shí)時(shí)進(jìn)行物理模擬。

    有關(guān)mmd播放器,網(wǎng)上也有許多非常漂亮的實(shí)現(xiàn),如?pmxeditor、saba、blender_mmd_tools等等。。 首先我想先介紹下我參考實(shí)現(xiàn)的倉(cāng)庫(kù): sselecirPyM/Coocoo3D: Experimental MMD renderer using DX12 and DXR. (github.com),這是sselecirPyM大神使用NET 6.0和DX12實(shí)現(xiàn)的mmd渲染器,支持自定義渲染管線、光照等,感

    2024年02月08日
    瀏覽(21)
  • C# .NET 7.0和Framework 4.8兩個(gè)框架的區(qū)別

    C# .NET 7.0和Framework 4.8兩個(gè)框架的區(qū)別

    .NET 7.0和Framework 4.8是微軟開(kāi)發(fā)的兩個(gè)不同版本的框架,用于構(gòu)建和運(yùn)行應(yīng)用程序。雖然它們都是用于C#編程語(yǔ)言的,但它們?cè)诠δ芎托阅芊矫嬗幸恍﹨^(qū)別。 首先,讓我們來(lái)看一下.NET 7.0的一些新功能和改進(jìn)。.NET 7.0是.NET的最新版本,它引入了許多新的功能和改進(jìn),以提高開(kāi)發(fā)

    2024年02月13日
    瀏覽(20)
  • 【W(wǎng)PF.NET開(kāi)發(fā)】WPF中的窗口

    【W(wǎng)PF.NET開(kāi)發(fā)】WPF中的窗口

    目錄 1、窗口類 2、實(shí)現(xiàn)窗口 2.1 為 MSBuild 配置窗口 3、窗口生存期 3.1 打開(kāi)窗口 3.2 窗口激活 3.3 關(guān)閉窗口 3.4 窗口生存期事件 4、窗口位置 4.1 最頂層窗口和 z 順序 5、窗口大小 6、大小調(diào)整屬性的優(yōu)先級(jí)順序 7、窗口狀態(tài) 8、窗口外觀 8.1 重設(shè)大小模式 8.2 Window style 8.3 任務(wù)欄顯示

    2024年02月04日
    瀏覽(28)
  • 【W(wǎng)PF.NET開(kāi)發(fā)】WPF中的文檔

    文檔類型 文檔控件和文本布局 文檔打包 XPS 文檔 Windows Presentation Foundation (WPF) 提供豐富的文檔功能,可創(chuàng)建旨在比前幾代 Windows 更易于訪問(wèn)和讀取的高保真內(nèi)容文檔。 除增強(qiáng)功能和質(zhì)量外,WPF 還對(duì)文檔顯示、打包和安全性能提供集成服務(wù)。 本主題介紹 WPF 文檔類型和文檔打

    2024年01月17日
    瀏覽(30)
  • 【W(wǎng)PF.NET開(kāi)發(fā)】WPF中的版式

    【W(wǎng)PF.NET開(kāi)發(fā)】WPF中的版式

    改進(jìn)的文本質(zhì)量和性能 豐富的版式 增強(qiáng)的國(guó)際文本支持 增強(qiáng)的字體支持 新的文本應(yīng)用程序編程接口 (API) 本主題介紹 WPF 的主要版式功能。 這些功能包括改進(jìn)的文本呈現(xiàn)質(zhì)量和性能、OpenType 版式支持、增強(qiáng)的國(guó)際文本、增強(qiáng)的字體支持和新的文本應(yīng)用程序編程接口 (API)。

    2024年02月01日
    瀏覽(52)
  • 【W(wǎng)PF.NET開(kāi)發(fā)】WPF中的拖放

    WPF 中的拖放支持 數(shù)據(jù)傳輸 拖放事件 實(shí)現(xiàn)拖放 拖放示例 本主題概述 Windows Presentation Foundation (WPF) 應(yīng)用程序中的拖放支持。 拖放通常指一種數(shù)據(jù)傳輸方法:使用鼠標(biāo)(或一些其他指針設(shè)備)選擇一個(gè)或多個(gè)對(duì)象,將其拖至用戶界面 (UI) 中的某些所需拖放目標(biāo)之上并放置。 拖

    2024年01月21日
    瀏覽(29)
  • 【W(wǎng)PF.NET開(kāi)發(fā)】WPF中的XAML資源

    使用 XAML 中的資源 靜態(tài)和動(dòng)態(tài)資源 靜態(tài)資源 動(dòng)態(tài)資源 樣式、DataTemplate 和隱式鍵 資源是可以在應(yīng)用中的不同位置重復(fù)使用的對(duì)象。 資源的示例包括畫(huà)筆和樣式。 本概述介紹如何使用 Extensible Application Markup Language (XAML) 中的資源。 你還可以使用代碼創(chuàng)建和訪問(wèn)資源。 ?備注

    2024年01月17日
    瀏覽(26)
  • 【W(wǎng)PF.NET開(kāi)發(fā)】預(yù)覽事件

    先決條件 預(yù)覽標(biāo)記為“已處理”的事件 通過(guò)控件解決事件禁止問(wèn)題 預(yù)覽事件,也稱為隧道事件,是從應(yīng)用程序根元素向下遍歷元素樹(shù)到引發(fā)事件的元素的路由事件。 引發(fā)事件的元素在事件數(shù)據(jù)中報(bào)告為Source 。 并非所有事件場(chǎng)景都支持或需要預(yù)覽事件。 本文介紹了預(yù)覽事件

    2024年02月03日
    瀏覽(29)
  • 【W(wǎng)PF.NET開(kāi)發(fā)】流文檔

    【W(wǎng)PF.NET開(kāi)發(fā)】流文檔

    什么是流文檔? 流文檔類型 創(chuàng)建流內(nèi)容 與流相關(guān)的類 內(nèi)容架構(gòu) 自定義文本 流文檔旨在優(yōu)化查看和可讀性。 流文檔根據(jù)運(yùn)行時(shí)變量(例如,窗口大小、設(shè)備分辨率和可選的用戶首選項(xiàng))來(lái)動(dòng)態(tài)調(diào)整和重新排列內(nèi)容,而不是設(shè)置為一個(gè)預(yù)定義的布局。 此外,流文檔還提供一

    2024年01月17日
    瀏覽(21)
  • 【W(wǎng)PF.NET開(kāi)發(fā)】弱事件模式

    先決條件 為什么要實(shí)現(xiàn)弱事件模式? 應(yīng)該由誰(shuí)實(shí)現(xiàn)弱事件模式? 如何實(shí)現(xiàn)弱事件模式 在應(yīng)用程序中,附加到事件源的處理程序可能不會(huì)與將處理程序附加到源的偵聽(tīng)器對(duì)象一同銷毀。 這種情況下會(huì)導(dǎo)致內(nèi)存泄漏。 Windows Presentation Foundation (WPF) 引入了可用于解決此問(wèn)題的設(shè)

    2024年02月03日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包