当有超过5个ComboBox项目时,如何在Windows Phone 8.1中设置ComboBox的样式?

时间:2014-07-27 09:49:12

标签: combobox windows-runtime windows-phone-8.1

我有一个ComboBox,它绑定到我的ViewModel中的一系列复杂类型,这些复杂类型可以是任意长度,具体取决于用户'偏好。

我创建了一个基于ComboBox默认设置的样式,当项目源数量为5或更低时,所有样式都按预期工作。

但是,如果Windows Phone 8.1中的ComboBox中包含的项目数超过5个,则它将使用全屏。

在这种情况下,我的样式都没有被应用,并且它使用的是默认的ComboBox样式。

无论ComboBox项目来源中的项目数量如何,我如何确保应用样式?

3 个答案:

答案 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>