1.什么是MVVM?
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供青山企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、做網(wǎng)站、HTML5建站、小程序制作等業(yè)務(wù)。10年已為青山眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進(jìn)行中。
MVVM是Model、View、ViewModel的簡寫,這種模式的引入就是使用ViewModel來降低View和Model的耦合,說是降低View和Model的耦合。也可以說是是降低界面和邏輯的耦合,理想情況下界面和邏輯是完全分離的,單方面更改界面時不需要對邏輯代碼改動,同樣的邏輯代碼更改時也不需要更改界面。同一個ViewModel可以使用完全不用的View進(jìn)行展示,同一個View也可以使用不同的ViewModel以提供不同的操作。

2.項目目錄
從上面的圖我們可以看出,處理事務(wù)的文件有幾個類型:View,ViewModel,Command,Property,Model,這個幾個類型的圖片

最下面的ViewModelBase.cs就是Property,對應(yīng)處理觸發(fā)屬性發(fā)現(xiàn)變化的事務(wù)。
3.代碼分析:
a):入口 App.xaml
private void Application_Startup(object sender, StartupEventArgs e)
{
//創(chuàng)建一個ViewModel;
MainViewModel mode = new MainViewModel();
//初始化ViewModel內(nèi)容
mode.ItemDatas = new ObservableCollection();
mode.ItemDatas.Add(new ItemData { Title = "TST", Content = "sss" });
mode.ItemDatas.Add(new ItemData { Title = "2TST", Content = "2sss" });
//初始化View;
MainWindow main = new MVVMGridDemo.MainWindow();
//把ViewModel綁定到View上
main.DataContext = mode;
//顯示窗口
main.Show();
}
b):MainWindow窗口ViewModel;
view代碼
<Grid>
<DataGrid x:Name="dataGrid" AutoGenerateColumns="False" ItemsSource="{Binding ItemDatas}" HorizontalAlignment="Left" Margin="57,59,0,0" VerticalAlignment="Top" Height="173" Width="320">
<DataGrid.Columns>
<DataGridTextColumn Header="Title" Width="100" Binding="{Binding Title}" />
<DataGridTextColumn Header="Content" Width="200" Binding="{Binding Content}"/>
</DataGrid.Columns>
</DataGrid>
<Button x:Name="button" Command="{Binding ButtonClick }" CommandParameter="{Binding ElementName=dataGrid}" Content="修改" HorizontalAlignment="Left" Margin="57,10,0,0" VerticalAlignment="Top" Width="75"/>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="19" Margin="155,10,0,0" TextWrapping="Wrap" Text="{Binding TexxT}" VerticalAlignment="Top" Width="97"/>
</Grid>
viewmodel代碼
public class MainViewModel : ViewModelBase {
private ObservableCollection _itemdatas;//view 中Name為Texxt的值在這里實現(xiàn)
private string _texxt;
public string TexxT {
get { return this._texxt; }
set
{
this._texxt = value;
OnPropertyChanged("TexxT");
}
}//view中itemsourse 為ItemData的數(shù)據(jù)綁定;
public ObservableCollection ItemDatas {
get { return _itemdatas; }
set
{
this._itemdatas = value;
OnPropertyChanged("ItemDatas");
}
}//修改按鈕點擊事件在這里實現(xiàn)
public ICommand ButtonClick {
get
{
return new ActionCommand(p => BClick(p));
}
}
private void BClick(object obj)
{
DataGrid box = (DataGrid)obj;
ItemDatas[0].Title = TexxT;//刷新dataGrid
box.Items.Refresh();
}
}
全部源代碼:https://github.com/servucn/MVVMGridDemo
交流地址:http://www.ucasp.net/wpfresources/mvvmgriddemo.shtml
文章名稱:WPF中MVVM如何綁定DataGrid并動態(tài)修改單元格
路徑分享:http://chinadenli.net/article30/jpcgpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、云服務(wù)器、搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站、做網(wǎng)站、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)