C# 在WPF/MVVM中缩放到Scrollviewer中心
在我的应用程序中,我得到了一个C# 在WPF/MVVM中缩放到Scrollviewer中心,c#,wpf,mvvm,zooming,scrollviewer,C#,Wpf,Mvvm,Zooming,Scrollviewer,在我的应用程序中,我得到了一个滚动查看器,其中包含一个列表框,用于使用画布显示边框。 列表框ItemSource绑定到包含边框的ObservableCollection 现在我想缩放到ScrollViewer的中心。 将滑块的值绑定到Canvas的ScaleX和ScaleY。RenderTransform很容易,但是如何将Scrollviewer的视口宽度*0.5和Scrollviewer的视口高度*0.5绑定到CenterX或CenterY 我知道在xaml中无法进行计算,但我甚至无法绑定Vi
滚动查看器
,其中包含一个列表框
,用于使用画布
显示边框。
列表框ItemSource
绑定到包含边框的ObservableCollection
现在我想缩放到ScrollViewer
的中心。
将滑块的值绑定到Canvas的ScaleX
和ScaleY
。RenderTransform
很容易,但是如何将Scrollviewer的视口宽度*0.5
和Scrollviewer的视口高度*0.5
绑定到CenterX
或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>
ZoomCenter和ZoomCenter是c代码中的属性,我使用
((MainView)System.Windows.Application.Current.MainWindow).ContentViewer.ViewportWidth;
我知道这不是MVVM和作弊,但我找不到更好的解决办法。我不确定我是否完全理解。。。为什么要使用ScrollViewer
和ListBox
,而不是只使用ListBox
中已有的ScrollViewer
?然后您简要地提到了一个滑块
。。。这和什么关系?如果您添加了一些XAML,可能会帮助我们更好地理解您的问题。使用?我对MVVM模式不熟悉,不知道listbox中的Scrollviewer