2017-08-12 75 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 /路径图标和故事板动画,并且我从来没有因为它们而注意过任何启动延迟。您可以尝试将大量资源字典包含到应用程序中,并且加载速度将尽可能快。 –