1

我有一个名为 ImageTemplate 的自定义用户控件。该控件包含一个图像,并具有允许用户对图像显示进行操作的功能。当特定事件触发时,图像将切换并且 ImageTemplate 的设置(显示新图像)将重置为默认值。

ImageTemplate 的一项功能是允许用户放大和缩小,当图像更改时,必须将缩放级别设置回默认值 (100%)。

用户可以通过三种方式进行缩放:

  1. 按住控制按钮并使用鼠标滚轮放大和缩小

  2. 使用组合框选择 20% 到 200% 之间的缩放级别

  3. 使用滑块控件选择缩放级别

我在使用滑块控件时遇到问题。

对于 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%”位置,因为它是图像的默认缩放;但是它不会移动到那个位置。

我该如何解决这个问题?

谢谢,

-弗林尼

4

0 回答 0