zoukankan      html  css  js  c++  java
  • DataView usage combind with event and ViewModel From ERP-DEV

    reflesh the selected item in DataView

    when we use DataView to display a set of data. Generally, we binding the selected item to our object in ViewModel. Then, we can modify the selected item to reflesh ui. How we do it?

    1. Relative Class

      ObservableCollection
      we usually use this type to host our data source. and binding the data source of ui element to this. So, if any add or delete operation, it will
      reflect back to ui automatically.

      ListCollectionView
      This class is used to get the view of the ui element. WPF has alreadly done some background work. it use the datasource
      to generate the View object and present it into the ui. so, if we hope to operate the ui. we need the view class not the
      data source.

    2. Sample Code

    Xaml:

      <ListView Grid.Row="1" Margin="5" Background="LightYellow" Name="lstProducts" ItemsSource="{Binding Products, Mode=TwoWay}" SelectedItem="{Binding SelectedProduct, Mode=TwoWay}" SelectionChanged="selectedItemChanged">
                    <ListView.View>
                        <GridView AllowsColumnReorder="True" >
                            <GridViewColumn DisplayMemberBinding="{Binding ProductName}" Header="产品名称" Width="200"/>
                            <GridViewColumn DisplayMemberBinding="{Binding ProductSize}" Header="产品大小" Width="200"/>
                        </GridView>
                    </ListView.View>                
                </ListView>
    

    Xaml.cs event:

     private void selectedItemChanged(object sender, SelectionChangedEventArgs e)
            {
                ListView lv = sender as ListView;
                ListCollectionView lcv = (ListCollectionView)CollectionViewSource.GetDefaultView(lv.ItemsSource);
                lcv.MoveCurrentTo(lv.SelectedItem);
            }
    

    ViewModel:

     #region public properties
            public ObservableCollection<ProductDataVM> Products
            {
                get
                {
                    return _products;
                }
                set
                {
                    _products = value;
                    RaisePropertyChanged("");
                }
            }
            public ProductDataVM SelectedProduct
            {
                get
                {
                    return _selectedProduct;
                }
                set
                {
                    _selectedProduct = value;
                    RaisePropertyChanged("");
                }
            }
            #endregion
    
  • 相关阅读:
    C# winform 获取鼠标点击位置
    C# 读取带有命名空间的xml
    ImageUtility辅助类
    C# 读取XML
    C# 根据生日获取年龄
    C# 将 WebService 封装成动态库
    C# 生成条形码
    C# Ftp Client 基本操作
    C# SQL帮助类
    C# 解压缩文件
  • 原文地址:https://www.cnblogs.com/kongshu-612/p/5494482.html
Copyright © 2011-2022 走看看