我有一个名为 ImageTemplate 的自定义用户控件。该控件包含一个图像,并具有允许用户对图像显示进行操作的功能。当特定事件触发时,图像将切换并且 ImageTemplate 的设置(显示新图像)将重置为默认值。
ImageTemplate 的一项功能是允许用户放大和缩小,当图像更改时,必须将缩放级别设置回默认值 (100%)。
用户可以通过三种方式进行缩放:
按住控制按钮并使用鼠标滚轮放大和缩小
使用组合框选择 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%”位置,因为它是图像的默认缩放;但是它不会移动到那个位置。
我该如何解决这个问题?
谢谢,
-弗林尼