日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WPF-MVVM学习心德(WinForm转WPF心德)

發布時間:2025/6/17 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF-MVVM学习心德(WinForm转WPF心德) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接觸MVVM接近一段時間了,有一點理解,寫下來。

之前是做winform的,工作需要,學習wpf。優缺點就不用說類,網上一大堆。我自己理解的話,有下面幾點:

1、首先是界面的xmal和界面分離:wpf也同樣支持拖拉控件,但是使用wpf的人,都覺得在xmal中寫控件更屌一點。并且可以使用靜態資源(Window。Resources)設置每一個控件的樣式(Style),統一界面風格更方便。Style中的TargetType指定屬于某一類控件,Setter指定屬性(Property)和Value。

  如 ?<Style x:key="TxtBoxStyle" TargetType=“TextBox”>

      <Setter Property="Width" ?Value="100" />

    </Style>

  Style中還可以添加Template,然后放置更多的樣式模板。

2、數據綁定,可以說是MVVM的核心。界面和后臺的數據交互代碼,統統放置在VM(ViewModel)中,M(Model)中放置數據對象,如SQL數據庫中的訂單表,在Modle中就是一個對象類。V(View)是界面層。

? 最近做了一個DataGrid的數據綁定,列中放置了TextBox、ComboBox、Button的控件,使用數據綁定驅動控件。

DataGrid的Columns中使用DataGridTemplateColumn,可以放置TextBox等控件。并在TextBox中添加TextBoxChanged事件,引用(xmlns:ie="http://schemas.microsoft.com/expression/2010/interactivity"),

<ie:Interaction.Trigger>

  <ie:EvenTrigger EventName="TextChanged">

    <ie:InvokeCommandAction Command="{Binding String,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" CommandParameter="String" />

?</ie:Interaction.Trigger>

在Button中直接可以使用Command和CommandParameter,CommandParameter中可以使用ElementName傳遞任何控件到VM層。當然這樣就違背了MVVM的設計初中,但是必要情況下,也可以這么用。如在選擇了DataGrid的一行中的Button,如何取得Button所在行的其他列的信息呢?把DataGrid傳過去就很方便了,直接使用SelectedItem。當然也可以在V層 .cs代碼中獲取后傳遞到VM層。

在DataGrid綁定數據時,指定ItemsSource=“{Binding xxx}“,VM層中使用ObservableCollection<xxxModel> 集合,并設置OnPropertyChanged。DataGrid列中Binding對象xxModel中的屬性就可以了。

如此就可以在DataGrid中顯示數據。有時候這樣Binding后還是不能顯示數據,可能是Binding數據對象需要靜態什么的。如ComboBox中綁定,這個我是設定類ComboBox類,其中有Value和Text及Guid屬性,并在xxxModle(DataGrid數據源對象中)定義集合,并在集合中添加值。并且Binding時這樣寫(別問為為什么,也是在網上找到代碼):”{Binding xxxModel.xxxCbBox},RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGrid},Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}“。

?

Button的Visibility屬性同樣可以做Banding。

轉載于:https://www.cnblogs.com/ouylvr0625/p/7267751.html

總結

以上是生活随笔為你收集整理的WPF-MVVM学习心德(WinForm转WPF心德)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。