2010-08-10 4 views
2

и спасибо, что заглянули в мой вопрос. Я хотел бы настроить ScrollBar в своем ScrollViewer. Нет проблем. Но ждать. Когда я это делаю, он также изменяет ScrollBar внутренних элементов управления. Я не хочу влиять на эти ScrollBars. Как указать правильную область?WPF/XAML Custom ScrollViewer ScrollBar без Custom ScrollBar во внутренних элементах управления (например, TextBox)

Вот XAML, который работает почти:

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <ScrollViewer> 
    <ScrollViewer.Resources> 
     <Style TargetType="{x:Type ScrollBar}"> 
     <Setter Property="Background" Value="Red" /> 
     </Style> 
    </ScrollViewer.Resources> 
    <TextBox Height="200" Width="200" VerticalScrollBarVisibility="Visible" /> 
    </ScrollViewer> 
</Page> 

ответ

2

Поскольку ScrollViewer поддерживает только один дочерний объект я добавил сетку, чтобы обернуть текстовое поле. В моем случае я применил стиль переопределения, чтобы сделать текстовое поле синим. Если вы удалите весь сеттер из сетки, вы получите значение по умолчанию.

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
     <ScrollViewer> 
      <ScrollViewer.Resources> 
       <Style TargetType="{x:Type ScrollBar}"> 
        <Setter Property="Background" Value="Red" /> 
       </Style> 
      </ScrollViewer.Resources> 
      <Grid> 
       <Grid.Resources> 
        <Style TargetType="{x:Type ScrollBar}"> 
         <!-- remove setter to get default --> 
         <Setter Property="Background" Value="Blue" /> 
        </Style> 
       </Grid.Resources> 
       <TextBox Height="200" Width="200" VerticalScrollBarVisibility="Visible" /> 
      </Grid>  
     </ScrollViewer> 
    </Grid> 
</Page> 
Смежные вопросы