Как редактировать стиль всплывающих окон в AutoCompleteBox

1

Как изменить стиль (фон и рамка) всплывающего окна в AutoCompleteBox в Windows Phone 8, xaml, С#?

Теги:
xaml
windows-phone-8

1 ответ

1

Вы должны отредактировать шаблон управления, так как эти свойства в шаблоне по умолчанию не являются настраиваемыми. Возможно, вы захотите создать новый стиль или просто переопределить существующий. Вот стиль по умолчанию (в источнике Toolkit в разделе Themes/Generic.xaml):

<Style TargetType="controls:AutoCompleteBox">
    <Setter Property="Background" Value="{StaticResource PhoneTextBoxBrush}"/>
    <Setter Property="BorderBrush" Value="{StaticResource PhoneTextBoxBrush}"/>
    <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
    <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilyNormal}"/>
    <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}"/>
    <Setter Property="Foreground" Value="{StaticResource PhoneTextBoxForegroundBrush}"/>
    <Setter Property="ItemTemplate">
        <Setter.Value>
            <DataTemplate>
                <ContentControl Content="{Binding}" Margin="8,7"/>
            </DataTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="Padding" Value="6,0,6,4"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="controls:AutoCompleteBox">
                <Grid>
                    <TextBox
                        x:Name="Text"
                        Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}"
                        FontFamily="{TemplateBinding FontFamily}"
                        FontSize="{TemplateBinding FontSize}"
                        FontStyle="{TemplateBinding FontStyle}"
                        FontWeight="{TemplateBinding FontWeight}"
                        Foreground="{TemplateBinding Foreground}"
                        InputScope="{TemplateBinding InputScope}"
                        Opacity="{TemplateBinding Opacity}"
                        Padding="{TemplateBinding Padding}"
                        Style="{TemplateBinding TextBoxStyle}"/>
                    <Popup x:Name="Popup">
                        <ListBox
                            x:Name="Selector"
                            Background="White"
                            BorderBrush="{StaticResource PhoneTextBoxEditBorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            FontFamily="{TemplateBinding FontFamily}"
                            FontSize="{TemplateBinding FontSize}"
                            FontStyle="{TemplateBinding FontStyle}"
                            FontWeight="{TemplateBinding FontWeight}"
                            Foreground="{TemplateBinding Foreground}"
                            IsTabStop="False"
                            ItemContainerStyle="{TemplateBinding ItemContainerStyle}"
                            ItemTemplate="{TemplateBinding ItemTemplate}"
                            Opacity="{TemplateBinding Opacity}"
                            Padding="0,8"/>
                    </Popup>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Таким образом, вы можете просто жестко закодировать новый цвет для ListBox в Popup, например:

                        <ListBox
                            x:Name="Selector"
                            Background="Black"
                            BorderBrush="Red"

В качестве альтернативы вы можете сделать стиль границы/фона, но тот же цвет, что и для TextBox:

                        <ListBox
                            x:Name="Selector"
                            Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"

Таким образом, стили, применяемые к экземплярам элемента управления, будут применяться как к TextBox, так и к всплывающему окну:

<controls:AutoCompleteBox Background="Black" BorderBrush="Red" ... />
  • 0
    спасибо, как я могу найти папку Themes / Generics.cs?
  • 0
    @ user3852834, если должен быть в вашем проекте, где, под инструментарием WP? Если нет, вы можете скачать источник: phone.codeplex.com/SourceControl/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню