我有一个ComboBox,它绑定到我的ViewModel中的一系列复杂类型,这些复杂类型可以是任意长度,具体取决于用户'偏好。
我创建了一个基于ComboBox默认设置的样式,当项目源数量为5或更低时,所有样式都按预期工作。
但是,如果Windows Phone 8.1中的ComboBox中包含的项目数超过5个,则它将使用全屏。
在这种情况下,我的样式都没有被应用,并且它使用的是默认的ComboBox样式。
无论ComboBox项目来源中的项目数量如何,我如何确保应用样式?
答案 0 :(得分:2)
您需要使用ListPickerFlyoutPresenter自定义弹出样式。 从C:\ Program Files(x86)\ Windows Phone Kits \ 8.1 \ Include \ abi \ Xaml \ Design \ generic.xaml获取默认模板,并应用您的首选项。
例如,您可以更改背景和前景颜色,如下所示:
<Style TargetType="controls:ListPickerFlyoutPresenter">
<Setter Property="Foreground" Value="Black" />
<Setter Property="Background" Value="White" />
...
答案 1 :(得分:0)
通过覆盖它的属性来自定义您的ComboBox。 在这里,我来解释一下。
ListPicker的背景是绑定属性,所以让我们改变它的默认值
<SolidColorBrush x:Key="FlyoutBackgroundThemeBrush" Color="{ThemeResource PhoneChromeColor}"/>
复制上面的代码段并将其粘贴到&lt; Application.Resources&gt; App.xaml
将颜色值更改为任何有效的十六进制值和&#34; Voila&#34;背景颜色已更改。
希望您喜欢详细说明。
答案 2 :(得分:-1)
您必须在ComboBox默认样式中编辑“FlyoutButton”对象。 当项目数量为5或更低时,“ShortListOuterBorder”显示为ComboBox模板,否则显示为“FlyoutButton”。
<ContentPresenter x:Name="HeaderContentPresenter" .... >
...
</ContentPresenter>
<!-- When items count is more than 5 -->
<Button x:Name="FlyoutButton" ....>
...
</Button>
<!-- When items count is 5 or less -->
<Border x:Name="ShortListOuterBorder" ....>
...
</Border>