簡體   English   中英

當屬性B更改時,MVVM更新屬性A

[英]MVVM Update Property A when Property B changes

我有一個ComboBox和DataGrid設置,如下所示:

<ComboBox Name="PayrollDatasesListBox"
          IsReadOnly="True"
          ItemsSource="{Binding PayrollDatabasesList}"
          SelectedValue="{Binding SelectedPayrollDatabase}" />

    <DataGrid Name="RateTable"
              ItemsSource="{Binding RateTableDataView}"
              Margin="20"
              AutoGenerateColumns="False"
              Width="775"> ...
    </DataGrid>

在ViewModel中,我具有以下屬性:

    public ObservableCollection<String> PayrollDatabasesList
    {
        get
        {
            DelphiaConfigModel _config = (App.Current.Resources["Locator"] as ViewModelLocator).SystemSetupViewModel.DelphiaConfigInfo;
            return new ObservableCollection<String>(_config.DatabaseInfo.PayrollDatabaseNames.Split(',')
                .Select(c => c.ToString().Trim())
                .ToList());
        }
    }

    public String SelectedPayrollDatabase { 
        get
        {
            return _SelectedPayrollDatabase;
        }
        set
        {
            if (_SelectedPayrollDatabase != value)
            {
                _SelectedPayrollDatabase = value;
                NotifyPropertyChanged(m => m.SelectedPayrollDatabase);
            }
        }
    }
    public String _SelectedPayrollDatabase;

    public DataView RateTableDataView
    {
        get
        {
            DataSet ds = new DataSet("TempDataSet");

            // Get reference to DelphiaConfigInfo
            DelphiaConfigModel _config = 
                (App.Current.Resources["Locator"] as ViewModelLocator).SystemSetupViewModel.DelphiaConfigInfo;

            using (SQLClass _sql = new SQLClass(_config.DatabaseInfo))
            {
                using (SqlConnection _conn = _sql.Connection)
                {
                    // use the chosen Payroll Database from ComboBox
                    //TODO: set InitialCatalog to selected database
                    SqlConnectionStringBuilder _newConn =
                        new SqlConnectionStringBuilder(_conn.ConnectionString) { InitialCatalog = SelectedPayrollDatabase };
                    _conn.ConnectionString = _newConn.ConnectionString;

                    //_conn.ChangeDatabase("SageHRMS_BKC");

                    SqlCommand _cmd = _conn.CreateCommand();
                    _cmd.CommandType = CommandType.StoredProcedure;
                    _cmd.CommandText = "aem.S_RateTable_SP";

                    SqlDataAdapter _adapter = new SqlDataAdapter(_cmd);

                    _adapter.Fill(ds);
                }
            }

            return ds.Tables[0].DefaultView;
        }
    }

SelectedPayrollDatabase更改時如何更新RateTableDataView?

我可能會遺漏一些東西,但是您只能從設置器中為所選的薪資數據庫進行更新。

或者只是通過傳遞您的屬性名稱從INotifyPropertyChanged調用PropertyChanged事件。

就像是...

NotifyPropertyChanged(m => m.RateTableDataView);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM