2017-08-12 74 views
1

我在我的應用程序中使用AutoSuggestBox,我更願意進行以下更改。UWP AutoSuggestBox自定義圖標

  1. 在使用QueryIcon = Find中,我可以看到最右側的搜索。我可以將它對齊到左邊(類似於邊緣搜索窗口)
  2. 我可以自定義「全部清除」按鈕嗎?我想在不同的時間使用不同的圖標,具體取決於SuggestBox中的一些操作。

能否請您指出我有哪些選擇?

感謝

回答

1

你需要的唯一的東西是應用一種新的風格,你可以從AutoSuggestBox styles and templates找到默認風格。因此,如果您想要將QueryButton左對齊,請更改佈局。

1

AutoSuggestBox是一個密封的控制,所以你不能retemplate它來定製它遠遠超出特性提供給您。有許多資源(見generic.xaml和docs),您可以覆蓋到,例如,改變圖標的​​大小:

<x:Double x:Key="AutoSuggestBoxIconFontSize">12</x:Double> 

理論上,你也可以抓取可視樹來檢索某些元素並在代碼隱藏中修改它們,但這可能很麻煩,引入錯誤並導致性能下降。

可以對AutoSuggestBox集TextBoxStyle並將其設置爲自定義的文本框,在這裏你可以操縱一些XAML的滿足您的需求,但你需要創建一個新的充滿風情的每個變化你需要。這樣做的缺點是,因爲您需要整個TextBox模板的多個實例,所以您將會受到性能影響,並且會阻止您將來免費接收錯誤修復和TextBox樣式更新。

您也可以使用您喜歡的任何自定義功能來實現您自己的AutoSuggestBox。這可能是一個更復雜的解決方案,但它可能是最簡單和最具性能的選項。

我會推薦而不是但是,由於這些更改會與平臺的其他部分不一致,並可能會讓用戶感到困惑。在Edge中,左側的搜索字形,但該字形與AutoSuggetsBox中的搜索按鈕不相同。實際上,Edge似乎沒有使用AutoSuggestBox控件,而是擁有自己的自定義實現。

+0

不,當您只是嘗試爲控件創建樣式時,您不會受到性能影響。 –

+0

無論您將這些樣式放在App.xaml還是Page.Resources中,它都需要在某個時候加載,這會引發性能下降。風格越複雜,命中越大。他們希望在不同的時間使用不同的圖標,這意味着完整的TextBox控件模板的多個副本,因爲您無法在不重寫整個控件模板的情況下操作模板中的字形或FontIcon位置,這將會是一個相對較大的命中以不覆蓋控件模板或覆蓋簡單控件的模板(如Button)的樣式。 –

+0

我有許多使用超過一百種自定義樣式的應用程序,其中包含許多svg /路徑圖標和故事板動畫,並且我從來沒有因爲它們而注意過任何啓動延遲。您可以嘗試將大量資源字典包含到應用程序中,並且加載速度將盡可能快。 –