Стиль TextBox не создает вертикальную полосу прокрутки - PullRequest
0 голосов
/ 04 ноября 2010

Я пытаюсь создать стиль для своего текстового поля, однако, когда я добавляю этот шаблон в стиль, вертикальные полосы прокрутки исчезают.

<Style x:Key="MyTextBoxStyle" BasedOn="{x:Null}" TargetType="{x:Type TextBox}">
        <Setter Property="Foreground" Value="{DynamicResource BlueForegroundBrush}"/>
        <Setter Property="BorderBrush" Value="Transparent"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="FontSize" Value="14"/>
        <Setter Property="Padding" Value="0,-5,0,0"/>
        <Setter Property="Width" Value="120"/>
        <Setter Property="Height" Value="100"/>
        <Setter Property="Focusable" Value="True"/>
        <Setter Property="AllowDrop" Value="True"/>
        <Setter Property="IsReadOnly" Value="True" />
        <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TextBox}">
                    <Grid>
                        <Rectangle x:Name="_rct" Stroke="#FFA8AFBE" RadiusX="8" RadiusY="8" Fill="White" />
                        <Border x:Name="_borderActive" BorderThickness="2" CornerRadius="8" BorderBrush="#FFA8AFBE" > 
                            <ListBox x:Name="Bd" SnapsToDevicePixels="true"
                                    Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}"
                                    BorderThickness="{TemplateBinding BorderThickness}"
                                    Margin="6">
                                <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                            </ListBox>
                        </Border>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

1 Ответ

0 голосов
/ 04 ноября 2010

Я заметил, что вы упаковываете ScrollViewer в ListBox.Шаблон по умолчанию для ListBox включает ScrollViewer, поэтому взаимодействие между ними, скорее всего, вызывает ваши ScrollBar проблемы.

Чего вы хотите добиться, поместив ScrollViewer в ListBox в вашем TextBox шаблоне?Если мы знаем, почему вы это делаете, мы, вероятно, можем помочь вам достичь желаемого поведения.

В шаблоне по умолчанию используется ListBoxChrome из сборки темы для достижения тематического вида границы.Если это то, что вам нужно, это сработает (обратите внимание, что вам нужно будет добавить ссылку на PresentationFramework.Aero):

<mwt:ListBoxChrome xmlns:mwt="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
                   Background="{TemplateBinding Background}" 
                   BorderBrush="{TemplateBinding BorderBrush}"
                   BorderThickness="{TemplateBinding BorderThickness}" 
                   RenderMouseOver="{TemplateBinding IsMouseOver}" 
                   RenderFocused="{TemplateBinding IsKeyboardFocusWithin}" 
                   SnapsToDevicePixels="True">
    <ScrollViewer Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
</mwt:ListBoxChrome>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...