0

在我的应用程序中,我得到了一个ScrollViewer,其中包含一个ListBox要显示BordersCanvas. ListBoxItemSource绑定到ObservableCollection,其中包含边框。

现在我想放大到ScrollViewer. 将滑块的值绑定到ScaleXand ScaleYofCanvas.RenderTransform很容易,但是如何将Scrollviewer's ViewportWidth*0.5and绑定ScrollViewer's ViewportHeight*0.5CenterXor CenterY

我知道在 xaml 中无法进行计算,但我什至无法绑定ViewportWidth. 在没有 MVVM 的情况下缩放到中心非常容易,但我找不到适用于 MVVM 的解决方案。

            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <Canvas Width="{Binding CanvasWidth}" Height="{Binding CanvasHeight}">
                        <Canvas.RenderTransform>
                            <ScaleTransform ScaleX="{Binding Zoomlevel,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" ScaleY="{Binding Zoomlevel,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" CenterX="{Binding ZoomCenterX, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" CenterY="{Binding ZoomCenterY, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                        </Canvas.RenderTransform>
                    </Canvas>
                </ItemsPanelTemplate>

ZoomCenterX 和 ZoomcenterY 是 c# 代码中的属性,我使用 ((MainView)System.Windows.Application.Current.MainWindow).ContentViewer.ViewportWidth; 计算它们的值 我知道这真的不是 MVVM 和作弊,但我找不到更好的解决方案。

4

0 回答 0