Добавить пользовательский комбинированный список прокрутки стиль wpf - PullRequest
0 голосов
/ 15 февраля 2020

Я знаю, что могу найти это на http://mark-dot-net.blogspot.com/2008/06/styling-listbox-with-silverlight-2-beta_21.html, но я хотел бы иметь возможность просто сделать что-то вроде этого:

<ComboBox Width="163" Height="30">
     <ComboBox.Style>
          <Style>
              <Setter Property="ScrollViewer" Value="{StaticResource Custom}"/>
          </Style>
     </ComboBox.Style>
</ComboBox>

Но из-за ScrollViewer недоступен, я пытался сделать что-то вроде этого:

<ComboBox Width="163" Height="30">
     <Style>
         <Setter Property="ScrollViewer.Style" Value="{StaticResource Custom}"/>
     </Style>
</ComboBox>

Но это не работает, и если я останусь в Combobox.Style, это выдаст мне ошибку Style object is not allowed to affect the Style property of the object to which it applies to. Я также попытался сделать ScrollViewer.Template но мой компьютер падает, когда я делаю это /: есть ли способ сделать это, не используя метод в ссылке, которую я предоставил ранее? Мой стиль xaml:

<ControlTemplate x:Key="VerticalScrollBar" TargetType="{x:Type ScrollBar}">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition MaxHeight="0"/>
                <RowDefinition Height="0.00001*"/>
                <RowDefinition MaxHeight="0"/>
            </Grid.RowDefinitions>
            <Border Grid.RowSpan="3" CornerRadius="2" Background="Transparent" />
            <RepeatButton Grid.Row="0" Style="{StaticResource ScrollBarLineButton}" Height="18" Command="ScrollBar.LineUpCommand" Content="M 0 4 L 8 4 L 4 0 Z" />
            <Track Name="PART_Track" Grid.Row="1" IsDirectionReversed="true">
                <Track.DecreaseRepeatButton>
                    <RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageUpCommand" />
                </Track.DecreaseRepeatButton>
                <Track.Thumb>
                    <Thumb Style="{StaticResource ScrollBarThumb}" Margin="1,0,1,0" Background="#E43D47" BorderBrush="{StaticResource HorizontalNormalBorderBrush}" />
                </Track.Thumb>
                <Track.IncreaseRepeatButton>
                    <RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageDownCommand" />
                </Track.IncreaseRepeatButton>
            </Track>
            <RepeatButton Grid.Row="3" Style="{StaticResource ScrollBarLineButton}" Height="18" Command="ScrollBar.LineDownCommand" Content="M 0 0 L 4 4 L 8 0 Z"/>
        </Grid>
    </ControlTemplate>

1 Ответ

1 голос
/ 16 февраля 2020

Просто объявите стиль ScrollViewer в блоке ресурсов ComboBox:

<ComboBox ItemsSource="{Binding Items}">
    <ComboBox.Resources>
        <Style TargetType="ScrollViewer">
            <Setter Property="Background" Value="Green" />
            <Setter Property="Padding" Value="20" />
        </Style>
    </ComboBox.Resources>
</ComboBox>
...