文系ギャル?エンジニアへの道のり

OSなにそれ美味しいの➡➡➡マルチエンジニア

Sliderのデザイン

♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥

なんか、今日は久しぶりに考えすぎて眠い。。

 

Google先生に、

Slider ストアアプリ VisualStudio2015 プログレスバー スライダー Thumb Rectangle TickBar  などなど

聞きまくってました。

 

今回やりたかったことはSliderに関して2つ。

①目盛りのデザインを変更

②バーの左側とつまみの部分の余白をなくす

———————————————————-----━━━━★

①目盛りのデザインを変更

に関しては、

デフォルトではこんな感じ。

f:id:mob-150508:20150929195218p:plain

この目盛りを、丸くしたいし色も変えたい。

こんな風に。

f:id:mob-150508:20150929195312p:plain

■結論

 <Slider><TickBar>の中だけでは無理そう。

最初、

>|cs| 

<TickBar x:Name="HorizontalInlineTickBar" Grid.ColumnSpan="3" Fill="#CCCCCC" Height="5" Grid.Row="1" Visibility="Visible" />

 ||<

とか書いてたけど、

無理。メモリの高さぐらいしか変更できない。

ので、

>|cs|

<Border Grid.Row="1" CornerRadius="5 0 0 5" Width="{Binding ElementName=HorizontalDecreaseRect, Path=ActualWidth}" Height="{Binding ElementName=HorizontalDecreaseRect, Path=ActualHeight}" Background="#5CBC3F" Margin="0 0 -10 0"/> 

||<

と、結局ボーダーを使うことに。
角丸するときにBoderでしか無理と思ってたけど、

>|cs| 

<!--これが満たされてない部分のバー-->
<Rectangle x:Name="HorizontalTrackRect" RadiusX="5" RadiusY="5" Grid.ColumnSpan="3" Fill="#ECECEC" Grid.Row="1" Margin="0,0,0,0" Opacity="0" Height="11"/>
<!--これが満たされている部分のバー-->
<Rectangle x:Name="HorizontalDecreaseRect" RadiusX="5" RadiusY="5" Fill="#5CBC3F" Grid.Row="1" Margin="0,0,0,0" Opacity="0" Height="11"/>

||<

だけでいけたのでBoder使ってなかった。

 

■プロセス

Sliderのメモリをデザインしたい!(アレンジ/スタイル/変更)

と思って、

スライダーのスタイルとテンプレートや、

TickBar クラス (System.Windows.Controls.Primitives)

スライダー Classを見てみるも、どこかわからん!自動翻訳してもおかしなことなる!!

 

プログラミング Windows 第6版 第8章 WPF 編 - 荒井省三のBlog - Site Home - MSDN Blogsには、

それっぽいコード

>|cs|
<Slider Grid.Row="2"
Orientation="Horizontal"
Margin="24 0"
Minimum="0"
Maximum="511"
SmallChange="1"
LargeChange="16"
AutoToolTipPlacement="BottomRight"
ValueChanged="OnSliderValueChanged" />
||<

が書いているも、詳しく載ってない。

ここに画像検索でそれっぽいのがあったけど、Silverlightでしか使えなさそう。

f:id:mob-150508:20150929193757p:plain

どっちかっていうとこっちの画像が正解??

f:id:mob-150508:20150929194035p:plain

 

 

C#全般得意で、ストアアプリに関する記事も多いのがHIROさん。

表示する目盛りの間隔を設定する | HIRO's.NET Blog

Slider | HIRO's.NET Blog

参考になったけど、踏み込んだところまで書かれていない。

でも、画像とコード(コメント付き)でかなりわかりやすいからぜひチェックしてみて。

カテゴリ検索もできるから、Sliderで絞ってね。

———————————————————-----━━━━★

②バーの左側とつまみの部分の余白をなくす

に関しては、実は①で同時に解決。

<Grid x:Name="SliderContainer" Background="Transparent">
<Grid x:Name="HorizontalTemplate">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>


<!--メモリ-->
<Border Grid.Row="1" Grid.ColumnSpan="3" Background="#FFECECEC" CornerRadius="5">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>

<Border Grid.Column="1" CornerRadius="2.5" Background="#FFCCCCCC" Width="5" Height="5"/>
<Border Grid.Column="3" CornerRadius="2.5" Background="#FFCCCCCC" Width="5" Height="5"/>
<Border Grid.Column="5" CornerRadius="2.5" Background="#FFCCCCCC" Width="5" Height="5"/>
</Grid>
</Border>

<!--これが満たされてない部分のバー-->
<Rectangle x:Name="HorizontalTrackRect" RadiusX="5" RadiusY="5" Grid.ColumnSpan="3" Fill="#ECECEC" Grid.Row="1" Margin="0,0,0,0" Opacity="0" Height="11"/>
<!--これが満たされている部分のバー-->
<Rectangle x:Name="HorizontalDecreaseRect" RadiusX="5" RadiusY="5" Fill="#5CBC3F" Grid.Row="1" Margin="0,0,0,0" Opacity="0" Height="11"/>

<!--メモリ-->
<!--<TickBar x:Name="HorizontalInlineTickBar" Grid.ColumnSpan="3" Fill="#CCCCCC" Height="5" Grid.Row="1" Visibility="Visible" />-->


<Border Grid.Row="1" CornerRadius="5 0 0 5" Width="{Binding ElementName=HorizontalDecreaseRect, Path=ActualWidth}" Height="{Binding ElementName=HorizontalDecreaseRect, Path=ActualHeight}" Background="#5CBC3F" Margin="0 0 -10 0"/>

<Thumb x:Name="HorizontalThumb" AutomationProperties.AccessibilityView="Raw" Grid.Row="0" Grid.RowSpan="3" Grid.Column="1" DataContext="{TemplateBinding Value}"
Height="Auto"
Width="Auto"
Style="{StaticResource SliderThumbStyle}" />
</Grid>
</Grid>

 

 

 

 

 

 以上。

 

 

 

負けない。           ☆ёйd★

♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥