不要用表示式體去初始化一個用做資料來源(比如ItemSource)的引用型別成員。比如這種
public List<MainWindowItem> Items => new List<MainWindowItem>() { new MainWindowItem{title="專案管理",icon="\ue613",type=typeof(專案管理Control),group="內部管理"}, new MainWindowItem{title="人力資源管理",icon="\ue828",type=typeof(人力資源管理Control),group="內部管理"}, new MainWindowItem{title="部門管理",icon="\ue7cf",type=typeof(部門管理Control),group="內部管理"}, new MainWindowItem{ title = "專案參與人員管理",icon="\ue608", type = typeof(專案參與人員管理Control), group = "其他管理" }, };
因為每次表示式體實際上是一個語法糖,被翻譯成了一個只讀屬性
public List<MainWindowItem> Items { get { return new List<MainWindowItem>() { new MainWindowItem{title="專案管理",icon="\ue613",type=typeof(專案管理Control),group="內部管理"}, new MainWindowItem{title="人力資源管理",icon="\ue828",type=typeof(人力資源管理Control),group="內部管理"}, new MainWindowItem{title="部門管理",icon="\ue7cf",type=typeof(部門管理Control),group="內部管理"}, new MainWindowItem{ title = "專案參與人員管理",icon="\ue608", type = typeof(專案參與人員管理Control), group = "其他管理" }, }; } }
導致每次訪問這個屬性時,都會重新new一個物件。這個物件和原來繫結到介面的物件不是同一個物件,某些情況下會出現意料之外的結果。