我正在设法找出我的问题的答案,但没有成功。没发现有人想做类似的事。
我只是想在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自动生成事件是因为网格获得分配给它的不同单元格样式,每次数据源都会发生更改。
因此,数据集可以得到不同数量的行和列,在缩放值为100时,缩放为1。在缩放值为10的情况下,标度为0.1。
在某些情况下,网格比滚动查看器更大,它显示滚动条,这很好,但我想要的是:在绑定完成并完成on之外(生成的所有内容)之后,我想放大到允许查看所有内容的级别。如果不可能,因为数据集太大,我需要停在Zoom 10 (10%)。我需要缩放的因素,以停止只在滴答,是在名单内。
我尝试迭代幻灯片上的滴答,设置缩放,并检查滚动查看器是否仍然显示滚动条,但这不起作用,滚动查看器总是在所有更改之前显示值。我的意思是,如果网格是1x1像素,滚动查看器滚动体ba可见是假的,即使1x1网格是1000 %缩放,所以1000x1000像素和滚动条实际显示。在代码运行完毕后,我单击一个按钮,即消息框、滚动条可见性,我认为它们是正确的。
似乎更改滑块值不会立即更新网格的比例转换。
因此,简而言之,我只是想要一个适合的比例,这只发生一次,每次绑定更新的数据。每次网格数据源发生变化时,我都会准确地知道。
谢谢
编辑数据农业。代码显示的是LayoutTransform而不是RenderTransform。我是在测试LayoutTransform时复制的,只是为了看看是否是这样。不管怎样,两者都在缩放上工作,但是缩放失败了。
发布于 2013-10-22 15:53:21
我开始从另一个角度来看这个问题,然后试着
scrZoomPanel.ComputedHorizontalScrollBarVisibility和
scrZoomPanel.ComputedHorizontalScrollBarVisibility在更改DataGrid之前,不要更改原始值。
因此,我正在寻找一种强制刷新scrZoomPanel的方法,并发现ou有这样一个函数:
scrZoomPanel.UpdateLayout();如果我每次都在尝试读取scrZoomPanel.ComputedHorizontalScrollBarVisibility之前调用它,那么它最终会返回给我真正的值。
但我觉得每次都要这么说有点伤脑筋。想知道是否有一种方法可以在XAML而不是后台代码中进行绑定更改强制刷新。
https://stackoverflow.com/questions/19520647
复制相似问题