我试图在没有成功的情况下找到我的问题的答案。没有发现任何人试图做类似的事情。
我只是想在 DataGrid 上设置一个默认比例因子(对象无关紧要)并让它手动编辑。现在让我更详细地解释一下。
我有一个滑块,其值范围从 10 到 100,间隔刻度为 10。
<Slider Name="sldZoom"
IsSnapToTickEnabled="True"
Height="180"
Orientation="Vertical"
TickPlacement="Both"
Minimum="10"
Maximum="100"
Ticks="10, 20, 30, 40, 50, 60, 70, 80, 90, 100"
Value="10" HorizontalAlignment="Center" />
然后我有一个具有固定高度和宽度的 ScrollViewer 用于格式目的
<ScrollViewer Name="scrZoomPanel"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto"
Height="500
Width="750"
Background="White">
最后我在滚动查看器中有一个带有随机列和行数量的 DataGrid
<DataGrid Name="grdArrangement"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
VerticalAlignment="Top"
ItemsSource="{Binding Path=ListData}"
IsHitTestVisible="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserReorderColumns="False"
CanUserSortColumns="False"
HeadersVisibility="None"
AutoGenerateColumns="True"
GridLinesVisibility="None"
SelectionMode="Single"
AutoGeneratingColumn="grdArrangement_AutoGeneratingColumn"
AutoGeneratedColumns="grdArrangement_AutoGeneratedColumns"
Background="White" >
<DataGrid.RenderTransform>
<ScaleTransform
ScaleX="{Binding ElementName=sldZoom, Path=Value, Converter={StaticResource ZoomRatio}}"
ScaleY="{Binding ElementName=sldZoom, Path=Value, Converter={StaticResource ZoomRatio}}" />
</DataGrid.RenderTransform>
</DataGrid>
2 自动生成事件是因为网格得到不同的单元格样式分配给它 eveytime 数据源更改
因此数据网格可以获得不同数量的行和列,并且在缩放值 100 时,比例为 1。在缩放值 10 时,比例为 0.1。
在某些情况下,网格比滚动查看器大,它显示滚动条,这很好,但我想要的是:在绑定完成和 onpaint 完成(生成的所有内容)之后,我想缩放到允许我看到所有内容的级别。如果由于数据网格太大而无法实现,我需要在 Zoom 10 (10%) 处停止。我需要缩放因子仅在列表内的刻度上停止。
我尝试遍历幻灯片刻度并设置缩放并检查滚动查看器是否仍显示滚动条,但这不起作用滚动查看器总是在一切改变之前显示值。我的意思是,如果网格是 1x1 像素,则滚动查看器滚动 ba 可见是错误的,即使它放大到足以使 1x1 网格达到 1000% 缩放,因此实际显示 1000x1000 像素和滚动条。onve 代码完成运行我单击消息框滚动条可见性的按钮,我认为它们是真的。
似乎更改滑块值不会立即更新网格的比例变换。
所以简而言之,我只想要一个 Scale To Fit 并且只发生一次数据网格的每次绑定更新。每次网格数据源更改时,我也都知道。
谢谢你
编辑数据网格。代码显示了 LayoutTransform 而不是 RenderTransform。我在测试 LayoutTransform 时复制了它,只是想看看是不是这样。无论如何,两者都适用于缩放但缩放以适应失败