#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));