Snoop是一款WPF的UI分析工具,方便調(diào)試WPF樣式等,快速了解XAML代碼的結(jié)構(gòu),同時可以對相應(yīng)的屬性進行修改或調(diào)整。它是一個WPF運行時對Visual UI調(diào)試的一個工具,解壓就可以使用,需要的朋友快來下載吧。
Snoop(WPF UI分析工具)使用方法
下載安裝后,運行Snoop.exe后出現(xiàn)一個類似工具條的界面:
下拉框中顯示的運行的WPF應(yīng)用程序,如果還么有打開需要調(diào)試的程序,可以打開后再點擊【刷新】按鈕獲取應(yīng)用程序列表,選中應(yīng)用程序后,點擊Snoop圖標(biāo)()可以打開Snoop。
左邊是可視化樹列表,選中可視化元素后,右邊中間顯示該元素的屬性,右邊下面是元素的UI預(yù)覽界面。
當(dāng)選中元素后,目標(biāo)應(yīng)用程序的響應(yīng)元素會高亮顯示在一個紅色邊框內(nèi)。
選中元素可以直接在列表中選擇,也可以按住Ctrl-Shift后移動鼠標(biāo)到目標(biāo)應(yīng)用程序的選擇元素上。
Snoop(WPF UI分析工具)界面面板介紹
可視元素列表(Visual TreeView)
當(dāng)出現(xiàn)性能問題時可以查看一下子元素的數(shù)量,盡量使得子元素數(shù)量達到最小。
通過過濾文本框右邊下拉控件可以查找錯誤的綁定。(在調(diào)試OpenExpressApp過程中,snoop會出現(xiàn)一些bug,而使得OEA程序關(guān)閉,原因不明)
屬性面板(Property Grid)
我更新過屬性值,但是好像沒有反映到目標(biāo)應(yīng)用程序中去。
事件視圖(RoutedEvents View)
預(yù)覽窗口(Preview Area)
選擇元素的預(yù)覽界面,這個由于性能原因默認是關(guān)閉的,不過我每次都是打開它,因為可以立刻看到效果:)
放大視圖(Zoom View)/3D Zoom View
Snoop(WPF UI分析工具)調(diào)試實例
在開發(fā)OpenExpressApp時,發(fā)現(xiàn)了一個比較UI上的bug,我就是借助Snoop進行調(diào)試解決的,以下是我遇到的問題。
解決UI BUG問題:
在模塊中,點擊Grid中間區(qū)域會出現(xiàn)一列長條
解決:
因為看上去有點像splitter控件,所以以為splitter位置出現(xiàn)問題,我把ListDetailForm.xaml列表和明細之間使用ResizingPanel代替Grid,也不是splitter了
發(fā)現(xiàn)問題依舊,這時就不知道是什么原因了,從樣子看出來還會是什么東東。這時正好snoop發(fā)布了,就用了一把。打開snoop看到這個豎條原來是CSLA中的BusyAnimation。我在Grid中間放置了一個顯示busy狀態(tài)的控件,終于找到罪魁禍?zhǔn)琢?,原來是這個東東在搗亂。
找到原因后就很好解決了,把BusyAnimation的VisibilityProperty綁定一下就可以解決了
//綁定IsVisible
BindingbdIsVisible=newBinding("IsBusy");
bdIsVisible.Source=DataProvider;
bdIsVisible.Converter=newBooleanToVisibilityConverter();
bdIsVisible.BindsDirectlyToSource=true;
busy.SetBinding(BusyAnimation.VisibilityProperty,bdIsVisible);