ImageTemplateというカスタムユーザーコントロールがあります。このコントロールには画像が含まれており、ユーザーが画像の表示に何かを行うことができる機能があります。特定のイベントが発生すると、画像が切り替わり、ImageTemplate(新しい画像を表示する)の設定がデフォルトにリセットされます。
ImageTemplateの機能の1つは、ユーザーがズームインおよびズームアウトできるようにすることです。画像が変更された場合、ズームレベルをデフォルト(100%)に戻す必要があります。
ユーザーがズームできる方法は3つあります。
コントロールボタンを押したまま、マウスのスクロールホイールを使用してズームインおよびズームアウトします
ComboBoxを使用して20%から200%の間のズームレベルを選択します
スライダーコントロールを使用してズームレベルを選択します
スライダーコントロールに問題があります。
ImageTemplateには、Zoomという依存関係プロパティを実装し、このプロパティのDependencyPropertyChangedEventを処理して、ズームスケーリングを実行するロジックを呼び出すことができるようにしました。
スライダーコントロールの値は、次のようにZoomプロパティにバインドされます。
<Slider x:Name="sldZoom"
Minimum="{Binding MinZoom, Source={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
Maximum="2"
TickFrequency="0.2"
IsSnapToTickEnabled="True"
SmallChange=".2" VerticalAlignment="Center" Width="200">
<Slider.Value>
<Binding Mode="TwoWay" Path="Zoom"
RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}"
UpdateSourceTrigger="PropertyChanged"
ValidatesOnDataErrors="True"
ValidatesOnExceptions="True">
</Binding>
</Slider.Value>
</Slider>
これで、ユーザーがスライダーをドラッグすると、コントロールが適切なレベルにズームします。また、ユーザーがマウスのスクロールボタンまたはComboBoxを使用してズームすると、スライダーが正しい位置に変わります。
スライダーコントロールの親指をドラッグしているときに画像が変わると、問題が発生します。
親指を「100%」の位置に戻したいのですが、これは画像のデフォルトのズームです。ただし、その位置には移動しません。
この問題を回避するにはどうすればよいですか?
ありがとうございました、
-フリニー