私はこのようなクラスを持っています:
public class ResourceList : ObservableCollection<Resource>
{
public ResourceList() : base()
{
}
}
public class Resource
{
public Resource()
{
Name = "";
EMail = "";
Date = "";
Time = "";
SWList = new ObservableCollection<string>();
}
public string Name { get; set; }
public string EMail { get; set; }
public string Date { get; set; }
public string Time { get; set; }
public ObservableCollection<string> SWList { get; set; }
}
public class Licenses : ObservableCollection<Licenses>
{
public Licenses()
{
}
public string Name { get; set; }
public string License { get; set; }
}
次の 2 つのコマンドは、ほとんど同じように見えます。
internal class ReadResourceFilesCommand : ICommand
{
public ReadResourceFilesCommand(ResourceViewModel viewModel)
{
_viewModel = viewModel;
}
private ResourceViewModel _viewModel;
#region ICommand Members
event EventHandler ICommand.CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
bool ICommand.CanExecute(object parameter)
{
return _viewModel.CanUpdate;
}
void ICommand.Execute(object parameter)
{
_viewModel.ReadResourceFile(parameter.ToString());
}
#endregion
}
internal class ReadInventoryFilesCommand : ICommand
{
public ReadInventoryFilesCommand(ResourceViewModel viewModel)
{
_viewModel = viewModel;
}
private ResourceViewModel _viewModel;
#region ICommand Members
event EventHandler ICommand.CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
bool ICommand.CanExecute(object parameter)
{
return _viewModel.CanUpdate;
}
void ICommand.Execute(object parameter)
{
_viewModel.ReadInventroyFiles(parameter.ToString());
}
#endregion
}
そして私のviewModelは次のようCanUpdate
になりResourceList
ます:
public bool CanUpdate
{
get
{
if (ResourceList == null)
{
return false;
}
return true;
}
}
public ResourceList ResourceList
{
get
{
return _ResourceList;
}
set
{
if (value == _ResourceList)
return;
_ResourceList = value;
// INotifyPropertyChanged Method for updating the binding
onPropertyChanged("ResourceList");
}
}
実際の問題: 最初のコマンドが実行されたとき、どちらでもかまいません。GUI のlistViewが読み込まれ、すべてが正常に見えます。しかし、他のコマンドが実行されると (実際には同じリスト内の要素が更新され、すべての要素のTimeおよびDate属性が更新されます)、listViewはその要素を更新しません。
リスト全体を変更しているのではなく、リスト内のいくつかの要素を更新しているため、更新されていない可能性があります。しかし、私は本当にどうすればよいのかわかりませんか?コードを変更する方法を説明してください!