我有接收基於點擊一個TreeView內該項目事件的方法。聲明變量的if else-if語句
我可以以完全相同的方式將項目添加到TreeView和TreeViewItem,因此試圖將item
分配爲基於state.sender
類型的TreeView或TreeViewItem。但是,目前我能做到的唯一方法就是先將項目指定爲對象。
private void ProcessEvent(Events.GetEventsResp resp, CustomAsyncStateContainer state)
{
object item = new object(); //must be a better way than this?
if (state.sender is TreeViewItem)
item = (TreeViewItem)state.sender;
else if (state.sender is TreeView)
item = (TreeView)state.sender;
//other code
}
我假定這被稱爲拆箱?有沒有更好的方法來做我正在嘗試的?
編輯:下面是餘下的代碼。在提問時我還沒有寫完,現在已經意識到object item = new object();
在這種情況下不起作用。
private void DisplayGetEvent(Events.GetEventsResp resp, CustomAsyncStateContainer state)
{
object node = new object();
if (state.sender is TreeViewItem)
node = (TreeViewItem)state.sender;
else if (state.sender is TreeView)
node = (TreeView)state.sender;
if (resp.eventItems != null)
{
Events.UXEvent[] eventItems = resp.eventItems;
Array.Sort(eventItems, new UXWrapper.UXEventComparer());
int itemCount = eventItems.Length;
TreeViewItem tvItem = new TreeViewItem;
for (int i = 0; i < itemCount; i++)
{
tvItem.Header = eventItems[i].name;
tvItem.Tag = eventItems[i];
node.Items.Add(tvItem);
}
}
}
你可以發佈整個代碼嗎?我需要了解爲什麼你需要像你一樣分配變量。 –
您可以直接將'item'分配給'null'。無需創建新對象 – alf
拆箱即將裝箱值類型轉換爲拆箱值。由於'TreeView'和'TreeViewItem'是引用類型,所以不能拆箱。另外,由於item仍然被輸入爲「object」,因此您的演員和類型檢查是多餘的。沒有看到代碼的其餘部分,不可能說出最好的方法。 – Lee