スクロールバーの最小サイズを不当に小さく変更しないようにするために、次のコードを使用します。 StaticResourceを使用しているすべてのインスタンスは、 "リソース" x "を解決できません。私はDynamicResourceに変更しようとしましたが、これはエラーを除去し、正しく実行されますが、代わりにスクロールバーのように見えないものがあります。私はもう1つの提案hereを試しましたが、ほとんど同じような結果がスクロールバーのように見えました。また、私は、テキストボックスクラスで実装されているスクロールバーに頼っているので、スクロールバーを拡張するという贅沢はありません。WPFスタイルでスクロールバーのサムサイズを設定すると、すべてのスタイルがコントロールから削除されます
コントロールのスタイルを完全に破棄せずに、テキストボックスのスクロールバーの最小サイズを修正するためにスタイルを使用する方法を教えてください。
this Microsoft pageから次のコードを取得しました。
<Style TargetType="ScrollBar">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ScrollBar">
<Grid Name="Bg"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="true">
<Grid.RowDefinitions>
<RowDefinition MaxHeight="{DynamicResource
{x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/>
<RowDefinition Height="0.00001*"/>
<RowDefinition MaxHeight="{DynamicResource
{x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/>
</Grid.RowDefinitions>
<RepeatButton Style="{StaticResource ScrollBarButton}"
IsEnabled="{TemplateBinding IsMouseOver}"
Height="18"
Command="ScrollBar.LineUpCommand"
Content="M 0 4 L 8 4 L 4 0 Z" />
<Track Name="PART_Track"
IsDirectionReversed="true"
Grid.Row="1"
Grid.ZIndex="-1">
<Track.Resources>
<!-- Set the Thumb's minimum height to 50.
The Thumb's minimum height is half the
value of VerticalScrollBarButtonHeightKey. -->
<sys:Double
x:Key="{x:Static SystemParameters.VerticalScrollBarButtonHeightKey}">
100
</sys:Double>
</Track.Resources>
<Track.DecreaseRepeatButton>
<RepeatButton Style="{StaticResource VerticalScrollBarPageButton}"
Command="ScrollBar.PageUpCommand"/>
</Track.DecreaseRepeatButton>
<Track.IncreaseRepeatButton>
<RepeatButton Style="{StaticResource VerticalScrollBarPageButton}"
Command="ScrollBar.PageDownCommand"/>
</Track.IncreaseRepeatButton>
<Track.Thumb>
<Thumb/>
</Track.Thumb>
</Track>
<RepeatButton
Grid.Row="2"
Style="{StaticResource ScrollBarButton}"
Height="18"
Command="ScrollBar.LineDownCommand"
Content="M 0 0 L 4 4 L 8 0 Z"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger SourceName="PART_Track"
Property="IsEnabled" Value="false">
<Setter TargetName="PART_Track"
Property="Visibility" Value="Hidden"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
以下は、このウィンドウの基本的な例です。
<Window x:Class="TriggersNotepad.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TriggersNotepad"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Title="Trigger's Notepad" Height="350" Width="525" ResizeMode="CanResizeWithGrip">
<Window.Resources>
Code above...
</Window.Resources>
<TextBox AcceptsReturn="True" UseLayoutRounding="False" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" BorderThickness="0"/>
</Window>
これには1つの問題があります。少なくともWindows 7では、親指のサイズを変更すると、上下左右のスクロールボタンのサイズも大きくなります。親指は妥当なサイズになりましたが、他のボタンでは、ストレッチで悲しいほど悪く見えるだけです。 (HorizontalからVerticalプロパティとHeightプロパティからWidthプロパティを削除したことに注意してください) –
残念ながら、Windows 7のテーマ(Aero.NormalColor.xaml)は、Microsoft.Windows.Themes.ScrollChrome'を使用してサムの矢印をレンダリングします。これはカスタムを尊重しません親指のサイズ。スタイルのコピーを作成し、 'ScaleTransform'を' RepeatButton'の中の 'ScrollChrome'に適用することができます。 – Yarik
ありがとうございます。 :)最後に私は元の答えと一緒に行った。私はそれをちょうど通常の最小親指のサイズを取得するために十分に伸ばした。それはあまりにも多くのぼんやりとした矢印ボタンが付いている。 –