【WPF】スライダーのカーソル位置に同期してウィンドウのサイズを変える
なにをするのか
WPFデスクトップアプリのスライダーコントロールを使う
スライダーのカーソル位置に応じて、ウィンドウのサイズを変える
つくったもの
画面とソースコードを載せる
※動いている画面の録画を試みたが、Win+G
の標準録画機能はつかえなかった
※理由:ウィンドウサイズが変更されると録画が停止されるため
画面
アプリ起動時
300 x 300の画面が表示される
画面には2つのスライダーが配置される
当初は「横スライダー=ウィンドウ横サイズ」として対応付けていたが
ウィンドウサイズ変更にともなってスライダーの幅も変わり、描画がカクつくので
上記のような割り当てとした。
XAMLソースコード
MainWindow.xaml
の内容を載せる
MainWindow.xaml
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="{Binding Value, ElementName=HorizontalSlider, Mode=TwoWay}"
Width="{Binding Value, ElementName=VerticalSlider, Mode=TwoWay}">
<DockPanel LastChildFill="False">
<!--水平方向のスライダー-->
<StackPanel DockPanel.Dock="Top" Margin="5" Background="LightPink">
<Slider x:Name="HorizontalSlider" Value="300" Minimum="300" Maximum="700"/>
<TextBlock Text="{Binding Value, ElementName=HorizontalSlider, StringFormat={}{0:N1}}"/>
</StackPanel>
<!--垂直方向のスライダー-->
<StackPanel DockPanel.Dock="Left" Orientation="Horizontal" Margin="5" Background="LightBlue">
<Slider x:Name="VerticalSlider" Value="300" Minimum="300" Maximum="700" Orientation="Vertical" IsDirectionReversed="True"/>
<TextBlock Text="{Binding Value, ElementName=VerticalSlider, StringFormat={}{0:N1}}"/>
</StackPanel>
</DockPanel>
</Window>
コードビハインドは変更していない
XAMLのポイント
- ウィンドウの高さ・幅は
Mode=TwoWay
とする - 縦スライダーは上が若い番号になるように
IsDirectionReversed="True"
とする - テキストブロックに
StringFormat={}{0:N1}
を設定する- 未指定の場合、少数表示時にドックの幅が広くなる(下画像)
参考
Author And Source
この問題について(【WPF】スライダーのカーソル位置に同期してウィンドウのサイズを変える), 我々は、より多くの情報をここで見つけました https://qiita.com/t13801206/items/10dd764c53790e81b86d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .