Как изменить передний план большого пальца полосы прокрутки в wpf?

#wpf

#wpf

Вопрос:

Я хочу изменить передний план большого пальца полосы прокрутки в своем коде.

Я применил стиль, который изменяет фон моего большого пальца, но я хотел изменить

изображение переднего плана во время выполнения. вот мой код стиля для полосы прокрутки.

 <ControlTemplate x:Key="MyScrollBar" TargetType="{x:Type ScrollBar}">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="178"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="12" />
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="12" />
                </Grid.RowDefinitions>
                <Border Grid.Row="1" CornerRadius="2"  BorderThickness="0" >
                    <Border.Background>
                        <ImageBrush ImageSource="/HyperVibe;component/Images/Grey_Slider_Background.png" />
                    </Border.Background>
                </Border>
                <RepeatButton Grid.Row="0" Command="ScrollBar.LineUpCommand" Content=" ^" />

                <!--IsDirectionReversed set to true draws a ScrollBar with a 
                    Track whose lowest value is at the bottom.
                    The default orientation of a ScrollBar is for the Track
                    values to decrease from top to bottom.-->
                <Track Grid.Row="1" Name="PART_Track" IsDirectionReversed="true">
                    <Track.Thumb>
                        <Thumb BorderThickness="1" DataContext="{Binding}" >
                            <Thumb.OpacityMask>
                                <ImageBrush ImageSource="/HyperVibe;component/Images/Green Slider.png" />
                            </Thumb.OpacityMask>
                            <Thumb.Background>
                                <ImageBrush ImageSource="/HyperVibe;component/Images/Green Slider.png" />
                            </Thumb.Background>
                        </Thumb>
                    </Track.Thumb>
                </Track>
                <RepeatButton Grid.Row="2" Command="ScrollBar.LineDownCommand" Content=" v" />
            </Grid>
        </ControlTemplate>
 

любая помощь будет принята с благодарностью.

С наилучшими пожеланиями, ~ Anup

Ответ №1:

Попробуйте, можете ли вы загрузить приведенный выше шаблон элемента управления в качестве DynamicResource и выполните следующие действия в коде C #. Если вы загрузите его как статический ресурс, вы не сможете редактировать ресурс, так как он будет запечатан.

 ControlTemplate myCtrlTpl = (ControlTemplate) FindResource("MyScrollBar");
Trigger tgrIsMouseOver = new Trigger { Property = Thumb.IsMouseOverProperty, Value = true };
Trigger tgrIsMouseNotOver = new Trigger { Property = Thumb.IsMouseOverProperty, Value = false };

ImageBrush mImgBrhDefault = (Create what ever brush either imagebrush or solidcolorbrush)
ImageBrush mImgBrhHighlight = (Create what ever brush either imagebrush or solidcolorbrush)

tgrIsMouseOver.Setters.Add(new Setter(Thumb.BackgroundProperty, mImgBrhHighlight));
tgrIsMouseNotOver.Setters.Add(new Setter(Thumb.BackgroundProperty, mImgBrhDefault));