91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

WPF 中 MVVM 如何綁定DataGrid 并動態修改單元格

發布時間:2020-08-02 15:31:19 來源:網絡 閱讀:5259 作者:servucn 欄目:系統運維

1.什么是MVVM?

 

MVVM是Model、View、ViewModel的簡寫,這種模式的引入就是使用ViewModel來降低View和Model的耦合,說是降低View和Model的耦合。也可以說是是降低界面和邏輯的耦合,理想情況下界面和邏輯是完全分離的,單方面更改界面時不需要對邏輯代碼改動,同樣的邏輯代碼更改時也不需要更改界面。同一個ViewModel可以使用完全不用的View進行展示,同一個View也可以使用不同的ViewModel以提供不同的操作。

 

WPF 中 MVVM 如何綁定DataGrid 并動態修改單元格

 

2.項目目錄

 

從上面的圖我們可以看出,處理事務的文件有幾個類型:View,ViewModel,Command,Property,Model,這個幾個類型的圖片

 

WPF 中 MVVM 如何綁定DataGrid 并動態修改單元格

 

最下面的ViewModelBase.cs就是Property,對應處理觸發屬性發現變化的事務。

 

3.代碼分析:

 

a):入口 App.xaml

 private void Application_Startup(object sender, StartupEventArgs e)
        {
           //創建一個ViewModel;
            MainViewModel mode = new MainViewModel();
           //初始化ViewModel內容
            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的值在這里實現
        private string _texxt;
        public string TexxT        {
            get { return this._texxt; }
            set
            {
                this._texxt = value;
                OnPropertyChanged("TexxT");
            }
        }//view中itemsourse 為ItemData的數據綁定;
        public ObservableCollection ItemDatas        {
            get { return _itemdatas; }
            set
            {
                this._itemdatas = value;
                OnPropertyChanged("ItemDatas");
            }
        }//修改按鈕點擊事件在這里實現
        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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌审旗| 五河县| 安新县| 文安县| 郯城县| 礼泉县| 油尖旺区| 宣威市| 黄梅县| 达拉特旗| 碌曲县| 哈密市| 卢氏县| 龙泉市| 镇坪县| 霞浦县| 保山市| 汾阳市| 谢通门县| 利辛县| 古丈县| 隆林| 象山县| 南召县| 平顶山市| 孝感市| 四会市| 旺苍县| 郸城县| 胶南市| 桦甸市| 密云县| 尼木县| 万州区| 淄博市| 沧源| 宁明县| 屯留县| 鹤庆县| 安义县| 遂宁市|