向ItemsControl添加缩放功能?

时间:2020-01-17 17:20:47

标签: c# wpf

我有一个看起来像这样的ItemsControl:

<ItemsControl x:Name="ItemsPanel" Grid.Row="1" ItemsSource="{Binding SquaresList}" Margin="10">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel IsItemsHost="True" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate DataType="{x:Type logic:PFSquare}">
            <Rectangle Width="{Binding Width}"
                       Height="{Binding Height}" 
                       Fill="{Binding Fill, UpdateSourceTrigger=PropertyChanged}" 
                       Margin="{Binding Margin}">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseEnter">
                        <i:InvokeCommandAction Command="{Binding OnMouseEnterCommand}"/>
                    </i:EventTrigger>
                    <i:EventTrigger EventName="MouseDown">
                        <i:InvokeCommandAction Command="{Binding OnMouseDownCommand}"/>
                    </i:EventTrigger>
                    <i:EventTrigger EventName="MouseRightButtonDown">
                        <i:InvokeCommandAction Command="{Binding OnMouseRightCommand}"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Rectangle>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

它只是一个矩形网格,看起来像这样: The Grid (ItemsSource是53 ^ 2个自定义正方形类实例的Observable集合)

我有一系列事件,当我单击某些正方形时会更改所单击的正方形的填充,请务必注意,我需要这些事件才能正常运行。 我想要的是能够使用滚轮进行放大,我尝试从另一个问题实现this answer,但是它完全破坏了比例,并破坏了我的项目控件。有没有办法实现对此控件的缩放并仍保留缩放和事件?

1 个答案:

答案 0 :(得分:0)

我最终使用了平移和缩放面板的实现,它提供了我需要的一切。可以看到实现here 重要的是要注意,这不是一个实际的面板,而是一个用于包装内容的控件。