我是新來的,希望你能幫助我。我有一個 WPF 應用程式,這是獲取物件(在本例中為 TreeView)和 ItemSelectionChangedEventArgs(我在其中捕獲當前檔案夾)的方法。
public static ObservableCollection<Folder> OnSelectionChanged(object sender, ItemSelectionChangedEventArgs itemSelection)
{
if (sender == null)
{
throw new ArgumentNullException("Can't be null", nameof(sender));
}
if (itemSelection == null)
{
throw new ArgumentNullException("Can't be null", nameof(itemSelection));
}
var selected = itemSelection.AddedItems[0] as Folder;
DirectoryInfo dirInfo = new DirectoryInfo(selected.FullName.ToString());
ObservableCollection<Folder> directories = new ObservableCollection<Folder>();
directories = AddDirectoryInfo(directories, dirInfo);
directories = AddFileInfo(directories, dirInfo);
return directories;
}
我需要為這個方法撰寫單元測驗,但是我嘗試初始化引數以傳輸到這個方法中我有例外。
private readonly string _folderName = "C:\\NewTestFolder";
[TestMethod()]
public void OnSelectionChangedTest()
{
var sender = new SfTreeView() { Name = "treeSize" };
var itemSelection = new ItemSelectionChangedEventArgs()
{
AddedItems = { new Folder()
{
FullName = _folderName,
HasChildrenNodes = false,
Modified = DateTime.Now.ToString(),
Name = "NewTestFolder",
Size = "0",
Type = "Folder"
} },
RemovedItems = { new Folder() { FullName = "" } }
};
var result = FolderView.OnSelectionChanged(sender, itemSelection);
}
發件人給出錯誤:System.InvalidOperationException:'呼叫執行緒應該是 STA,因為大多數 UI 組件都需要它。'
itemSelection 給出錯誤:System.NullReferenceException:“物件參考未設定為物件的實體。”
也許我做錯了什么,這些傳遞給方法的引數應該以其他方式設定。
uj5u.com熱心網友回復:
首先,感謝@CharlesMager 的回答,我真的錯過了我不需要“發件人”引數的事實。
對于這種情況,接下來它幫助了我,我創建了新類 ItemSelectionChangedEventArgs 并從當前基本類繼承了他,然后我重新定義了變數 AdditionalItems 和 RemoveItems,因為在基本類中它們具有“內部集”,然后我初始化了新串列。
AddedItems = new List<object>()
{
new Folder()
{
FullName = _folderName,
HasChildrenNodes = false,
Modified = DateTime.Now.ToString(),
Name = "NewTestFolder",
Size = "0",
Type = "Folder"
}
},
RemovedItems = new List<object>()
{
new Folder()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/494267.html
