[英]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.