私は誰かが私を助けることができると確信している単純な問題を抱えています。accountID
メソッドで変数をINavigationAware
使用してから、別のクラスで使用するにはどうすればよいですか?
以下は私のコードです:
ViewModel関連コード(HistoryAuditLogViewModel.cs):
#region Private Fields
private DatabaseConnectionSetting dbSetting;
private string tableName = "Manufacturers";
private int primaryKeyID = 1;
private string entryID;
private string manufacturerID;
private string manufacturerName;
private string auditDate;
private string sqlLogin;
private string application;
private List<string> dataList;
private string dbConnectionKey = Alliance.Infrastructure.Common.DatabaseConnectionSetting.BACKFLOW_SCOPE_KEY;
private int ShowAuditLogForPrimaryID { get; set; }
private int initialAuditID;
private int _accountID;
private string xmlString()
{
return "<row EntryID=\"" + entryID + "\" ManufacturerID=\"" + manufacturerID + "\" ManufacturerName=\"" + manufacturerName + "\" AuditDate=\"" + auditDate + "\" SqlLogin=\"" + sqlLogin + "\" Application=\"" + application + "\" />";
}
private DataSet _dataSet;
#endregion
#region Public Fields
public DataSet dataSet
{
get { return _dataSet; }
set { _dataSet = value; }
}
public int accountID
{
get { return _accountID; }
set { _accountID = value; }
}
#endregion
#region INavigationAware Members
bool INavigationAware.IsNavigationTarget(NavigationContext navigationContext)
{
string tableName;
string holdStringValue;
holdStringValue = navigationContext.Parameters["primarykey"];
if (holdStringValue == null ||
!Int32.TryParse(holdStringValue, out accountID))
{
accountID = 0;
}
if (accountID == this.ShowAuditLogForPrimaryID)
{
return true;
}
else
{
return false;
}
}
void INavigationAware.OnNavigatedFrom(NavigationContext navigationContext)
{
}
void INavigationAware.OnNavigatedTo(NavigationContext navigationContext)
{
string holdStringValue;
int accountID;
initialAuditID = 0;
holdStringValue = navigationContext.Parameters["TableName"];
if (holdStringValue == null ||
!Int32.TryParse(holdStringValue, out initialAuditID))
{
initialAuditID = 0;
}
holdStringValue = navigationContext.Parameters["AccountID"];
if (holdStringValue != null &&
Int32.TryParse(holdStringValue, out accountID))
{
this.ShowAuditLogForPrimaryID = accountID;
}
else
{
this.ShowAuditLogForPrimaryID = 0;
}
Load_Audit();
}
#endregion INavigationAware Members
accountID
これらのメソッドで設定されているとテーブル名を使用する必要があります。少なくとも、それが設定されている場所だと思います。私は一度も使用したことがないINavigation
ので、それがどのように機能するかについて少し混乱しています。
ここで、ViewModel(CoreModuleDesktop)の変数を使用できるようにする必要があります。
this.NavManager.RegisterCommonActionItem("History Audit Log", "AuditLog", 110,
new BitmapImage(new Uri("pack://application:,,,/Core;component/Resources/maintenance.png")),
new Action(() =>
{
IRegionManager regionManager = AllianceApp.Container.GetExportedValue<IRegionManager>();
UriQuery query = new UriQuery();
query.Add("AccountID", accountID.ToString());
//query.Add("ServiceOrderID", tableName.ToString());
regionManager.RequestNavigate(RegionNames.MainRegion, new Uri(typeof(HistoryAuditLogView).FullName + query.ToString(), UriKind.Relative));
}));
}
基本的に、これにより、ViewModelでクエリを実行して、クエリの結果をデータグリッドビューに配置できます。どんな助けでもありがたいです。