首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF RenderTransform标度问题

WPF RenderTransform标度问题
EN

Stack Overflow用户
提问于 2013-10-22 14:27:18
回答 1查看 1.5K关注 0票数 0

我正在设法找出我的问题的答案,但没有成功。没发现有人想做类似的事。

我只是想在DataGrid上设置一个默认的缩放因子(对象并不重要),并让它手动编辑。现在让我更详细地解释。

我有一个数值范围从10到100的滑雪板,间隔时间为10。

代码语言:javascript
复制
<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作为格式。

代码语言:javascript
复制
<ScrollViewer Name="scrZoomPanel" 
              HorizontalScrollBarVisibility="Auto" 
              VerticalScrollBarVisibility="Auto" 
              Height="500
              Width="750" 
              Background="White">

最后,我在滚动查看器中有一个具有随机列和行数量的DataGrid。

代码语言:javascript
复制
<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时复制的,只是为了看看是否是这样。不管怎样,两者都在缩放上工作,但是缩放失败了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-22 15:53:21

我开始从另一个角度来看这个问题,然后试着

代码语言:javascript
复制
scrZoomPanel.ComputedHorizontalScrollBarVisibility

代码语言:javascript
复制
scrZoomPanel.ComputedHorizontalScrollBarVisibility

在更改DataGrid之前,不要更改原始值。

因此,我正在寻找一种强制刷新scrZoomPanel的方法,并发现ou有这样一个函数:

代码语言:javascript
复制
scrZoomPanel.UpdateLayout();

如果我每次都在尝试读取scrZoomPanel.ComputedHorizontalScrollBarVisibility之前调用它,那么它最终会返回给我真正的值。

但我觉得每次都要这么说有点伤脑筋。想知道是否有一种方法可以在XAML而不是后台代码中进行绑定更改强制刷新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19520647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档